-gboolean
-buttonrelease(WebKitWebView *web, GdkEventButton *e, Client *c)
-{
- WebKitHitTestResultContext context;
- WebKitHitTestResult *result;
- Arg arg;
- unsigned int i;
-
- result = webkit_web_view_get_hit_test_result(web, e);
- g_object_get(result, "context", &context, NULL);
- g_object_get(result, "link-uri", &arg.v, NULL);
- for (i = 0; i < LENGTH(buttons); i++) {
- if (context & buttons[i].click
- && e->button == buttons[i].button
- && CLEANMASK(e->state) == CLEANMASK(buttons[i].mask)
- && buttons[i].func) {
- buttons[i].func(c, buttons[i].click == ClkLink
- && buttons[i].arg.i == 0 ? &arg : &buttons[i].arg);
- return true;
- }
- }
- return false;
-}
-
-void
-cleanup(void)
-{
- while (clients)
- destroyclient(clients);
- g_free(cookiefile);
- g_free(scriptfile);
- g_free(stylefile);
- g_free(cachedir);
-}
-
-WebKitCookieAcceptPolicy
-cookiepolicy_get(void)
-{
- switch (cookiepolicies[cookiepolicy]) {
- case 'a':
- return WEBKIT_COOKIE_POLICY_ACCEPT_NEVER;
- case '@':
- return WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY;
- case 'A':
- default:
- break;
- }
-
- return WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS;
-}
-
-char
-cookiepolicy_set(const WebKitCookieAcceptPolicy ep)
-{
- switch (ep) {
- case WEBKIT_COOKIE_POLICY_ACCEPT_NEVER:
- return 'a';
- case WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY:
- return '@';
- case WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS:
- default:
- break;
- }
-
- return 'A';
-}
-
-void
-evalscript(JSContextRef js, char *script, char* scriptname)
-{
- JSStringRef jsscript, jsscriptname;
- JSValueRef exception = NULL;
-
- jsscript = JSStringCreateWithUTF8CString(script);
- jsscriptname = JSStringCreateWithUTF8CString(scriptname);
- JSEvaluateScript(js, jsscript, JSContextGetGlobalObject(js),
- jsscriptname, 0, &exception);
- JSStringRelease(jsscript);
- JSStringRelease(jsscriptname);
-}
-
-void
-runscript(WebKitWebFrame *frame)
-{
- char *script;
- GError *error;
-
- if (g_file_get_contents(scriptfile, &script, NULL, &error)) {
- evalscript(webkit_web_frame_get_global_context(frame), script,
- scriptfile);
- }
-}
-
-void
-clipboard(Client *c, const Arg *arg)
-{
- gboolean paste = *(gboolean *)arg;
-
- if (paste) {
- gtk_clipboard_request_text(gtk_clipboard_get(
- GDK_SELECTION_PRIMARY),
- pasteuri, c);
- } else {
- gtk_clipboard_set_text(gtk_clipboard_get(
- GDK_SELECTION_PRIMARY), c->linkhover
- ? c->linkhover : geturi(c), -1);
- }
-}
-
-char *
-copystr(char **str, const char *src)
-{
- char *tmp;
- tmp = g_strdup(src);
-
- if (str && *str) {
- g_free(*str);
- *str = tmp;
- }
- return tmp;
-}
-
-WebKitWebView *
-createwindow(WebKitWebView *v, WebKitWebFrame *f, Client *c)
-{
- Client *n = newclient();
- return n->view;
-}
-
-gboolean
-decidedownload(WebKitWebView *v, WebKitWebFrame *f, WebKitNetworkRequest *r,
- gchar *m, WebKitWebPolicyDecision *p, Client *c)
-{
- if (!webkit_web_view_can_show_mime_type(v, m)) {
- webkit_web_policy_decision_download(p);
- return TRUE;
- }
- return FALSE;
-}
-
-gboolean
-decidewindow(WebKitWebView *view, WebKitWebFrame *f, WebKitNetworkRequest *r,
- WebKitWebNavigationAction *n, WebKitWebPolicyDecision *p,
- Client *c)
-{
- Arg arg;
-
- if (webkit_web_navigation_action_get_reason(n)
- == WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED) {
- webkit_web_policy_decision_ignore(p);
- arg.v = (void *)webkit_network_request_get_uri(r);
- newwindow(NULL, &arg, 0);
- return TRUE;
- }
- return FALSE;
-}
-
-gboolean
-deletion_interface(WebKitWebView *view, WebKitDOMHTMLElement *arg1, Client *c)
-{
- return FALSE;
-}
-
-void
-destroyclient(Client *c)