- Client *n;
-
- switch (webkit_navigation_action_get_navigation_type(a)) {
- case WEBKIT_NAVIGATION_TYPE_OTHER: /* fallthrough */
- /*
- * popup windows of type “other” are almost always triggered
- * by user gesture, so inverse the logic here
- */
- if (webkit_navigation_action_is_user_gesture(a)) {
- return NULL;
- break;
- }
- case WEBKIT_NAVIGATION_TYPE_LINK_CLICKED: /* fallthrough */
- case WEBKIT_NAVIGATION_TYPE_FORM_SUBMITTED: /* fallthrough */
- case WEBKIT_NAVIGATION_TYPE_BACK_FORWARD: /* fallthrough */
- case WEBKIT_NAVIGATION_TYPE_RELOAD: /* fallthrough */
- case WEBKIT_NAVIGATION_TYPE_FORM_RESUBMITTED:
- n = newclient(c);
- break;
- default:
- return NULL;
- break;
- }
-
- return GTK_WIDGET(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)
-{
- Client *p;
-
- webkit_web_view_stop_loading(c->view);
- gtk_widget_destroy(GTK_WIDGET(c->view));
- gtk_widget_destroy(c->scroll);
- gtk_widget_destroy(c->vbox);
- gtk_widget_destroy(c->win);
-
- for (p = clients; p && p->next != c; p = p->next)
- ;
- if (p)
- p->next = c->next;
- else
- clients = c->next;
- free(c);
- if (clients == NULL)
- gtk_main_quit();
-}
-
-void
-destroywin(GtkWidget* w, Client *c)
-{
- destroyclient(c);
-}
-
-void
-die(const char *errstr, ...)
-{
- va_list ap;
-
- va_start(ap, errstr);
- vfprintf(stderr, errstr, ap);
- va_end(ap);
- exit(EXIT_FAILURE);
-}
-
-void
-find(Client *c, const Arg *arg)
-{
- const char *s;
-
- s = getatom(c, AtomFind);
- gboolean forward = *(gboolean *)arg;
- webkit_web_view_search_text(c->view, s, FALSE, forward, TRUE);
-}
-
-void
-fullscreen(Client *c, const Arg *arg)
-{
- if (c->fullscreen)
- gtk_window_unfullscreen(GTK_WINDOW(c->win));
- else
- gtk_window_fullscreen(GTK_WINDOW(c->win));
- c->fullscreen = !c->fullscreen;
-}
-
-gboolean
-permissionrequested(WebKitWebView *v, WebKitPermissionRequest *r, Client *c)
-{
- if (WEBKIT_IS_GEOLOCATION_PERMISSION_REQUEST(r)) {
- if (allowgeolocation)
- webkit_permission_request_allow(r);
- else
- webkit_permission_request_deny(r);
- return TRUE;
- }
-
- return FALSE;