Fix clickexternplayer(), no need to test the target again
[surf.git] / surf.c
diff --git a/surf.c b/surf.c
index 05c22ec..a5cfdd0 100644 (file)
--- a/surf.c
+++ b/surf.c
@@ -105,7 +105,6 @@ static void sigchld(int unused);
 static char *buildfile(const char *path);
 static char *buildpath(const char *path);
 static Client *newclient(Client *c);
-static void addaccelgroup(Client *c);
 static void loaduri(Client *c, const Arg *a);
 static const char *geturi(Client *c);
 static void setatom(Client *c, int a, const char *v);
@@ -131,8 +130,6 @@ static WebKitWebView *newview(Client *c, WebKitWebView *rv);
 static GtkWidget *createview(WebKitWebView *v, WebKitNavigationAction *a,
                              Client *c);
 static gboolean buttonreleased(GtkWidget *w, GdkEvent *e, Client *c);
-static gboolean keypress(GtkAccelGroup *group, GObject *obj, guint key,
-                         GdkModifierType mods, Client *c);
 static GdkFilterReturn processx(GdkXEvent *xevent, GdkEvent *event,
                                 gpointer d);
 static gboolean winevent(GtkWidget *w, GdkEvent *e, Client *c);
@@ -343,21 +340,6 @@ newclient(Client *rc)
        return c;
 }
 
-void
-addaccelgroup(Client *c)
-{
-       int i;
-       GtkAccelGroup *group = gtk_accel_group_new();
-       GClosure *closure;
-
-       for (i = 0; i < LENGTH(keys); i++) {
-               closure = g_cclosure_new(G_CALLBACK(keypress), c, NULL);
-               gtk_accel_group_connect(group, keys[i].keyval, keys[i].mod, 0,
-                                       closure);
-       }
-       gtk_window_add_accel_group(GTK_WINDOW(c->win), group);
-}
-
 void
 loaduri(Client *c, const Arg *a)
 {
@@ -744,6 +726,13 @@ newview(Client *c, WebKitWebView *rv)
                webkit_cookie_manager_set_accept_policy(
                    webkit_web_context_get_cookie_manager(context),
                    cookiepolicy_get());
+               /* languages */
+               webkit_web_context_set_preferred_languages(context,
+                                                          preferedlanguages);
+               webkit_web_context_set_spell_checking_languages(context,
+                   spellinglanguages);
+               webkit_web_context_set_spell_checking_enabled(context,
+                   enablespellchecking);
 
                g_signal_connect(G_OBJECT(context), "download-started",
                                 G_CALLBACK(downloadstarted), c);
@@ -828,28 +817,6 @@ buttonreleased(GtkWidget *w, GdkEvent *e, Client *c)
        return FALSE;
 }
 
-gboolean
-keypress(GtkAccelGroup *group, GObject *obj, guint key, GdkModifierType mods,
-         Client *c)
-{
-       guint i;
-       gboolean processed = FALSE;
-
-       mods = CLEANMASK(mods);
-       key = gdk_keyval_to_lower(key);
-       updatewinid(c);
-       for (i = 0; i < LENGTH(keys); i++) {
-               if (key == keys[i].keyval
-                   && mods == keys[i].mod
-                   && keys[i].func) {
-                       keys[i].func(c, &(keys[i].arg));
-                       processed = TRUE;
-               }
-       }
-
-       return processed;
-}
-
 GdkFilterReturn
 processx(GdkXEvent *e, GdkEvent *event, gpointer d)
 {
@@ -878,11 +845,26 @@ processx(GdkXEvent *e, GdkEvent *event, gpointer d)
 gboolean
 winevent(GtkWidget *w, GdkEvent *e, Client *c)
 {
+       int i;
+
        switch (e->type) {
        case GDK_ENTER_NOTIFY:
                c->overtitle = c->targeturi;
                updatetitle(c);
                break;
+       case GDK_KEY_PRESS:
+               if (!kioskmode) {
+                       for (i = 0; i < LENGTH(keys); ++i) {
+                               if (gdk_keyval_to_lower(e->key.keyval) ==
+                                   keys[i].keyval &&
+                                   CLEANMASK(e->key.state) == keys[i].mod &&
+                                   keys[i].func) {
+                                       updatewinid(c);
+                                       keys[i].func(c, &(keys[i].arg));
+                                       return TRUE;
+                               }
+                       }
+               }
        case GDK_LEAVE_NOTIFY:
                c->overtitle = NULL;
                updatetitle(c);
@@ -928,7 +910,6 @@ showview(WebKitWebView *v, Client *c)
                webkit_web_view_set_background_color(c->view, &bgcolor);
 
        if (!kioskmode) {
-               addaccelgroup(c);
                gdk_window_set_events(gwin, GDK_ALL_EVENTS_MASK);
                gdk_window_add_filter(gwin, processx, c);
        }
@@ -970,6 +951,8 @@ createwindow(Client *c)
                         G_CALLBACK(destroywin), c);
        g_signal_connect(G_OBJECT(w), "enter-notify-event",
                         G_CALLBACK(winevent), c);
+       g_signal_connect(G_OBJECT(w), "key-press-event",
+                        G_CALLBACK(winevent), c);
        g_signal_connect(G_OBJECT(w), "leave-notify-event",
                         G_CALLBACK(winevent), c);
        g_signal_connect(G_OBJECT(w), "window-state-event",
@@ -1442,10 +1425,8 @@ clickexternplayer(Client *c, const Arg *a, WebKitHitTestResult *h)
 {
        Arg arg;
 
-       if (webkit_hit_test_result_get_context(h) & OnMedia) {
-               arg = (Arg)VIDEOPLAY(webkit_hit_test_result_get_media_uri(h));
-               spawn(c, &arg);
-       }
+       arg = (Arg)VIDEOPLAY(webkit_hit_test_result_get_media_uri(h));
+       spawn(c, &arg);
 }
 
 int
@@ -1534,7 +1515,7 @@ main(int argc, char *argv[])
                stylefile = EARGF(usage());
                break;
        case 'u':
-               useragent = EARGF(usage());
+               fulluseragent = EARGF(usage());
                break;
        case 'v':
                die("surf-"VERSION", ©2009-2015 surf engineers, "