Keys: alt+[left,right,h]
authordusanx <ef_dva@yahoo.com>
Fri, 24 Apr 2009 15:25:46 +0000 (17:25 +0200)
committerdusanx <ef_dva@yahoo.com>
Fri, 24 Apr 2009 15:25:46 +0000 (17:25 +0200)
uzbl.c

diff --git a/uzbl.c b/uzbl.c
index c38a662..69ad008 100644 (file)
--- a/uzbl.c
+++ b/uzbl.c
@@ -28,6 +28,8 @@
 
 #include <gtk/gtk.h>
 #include <webkit/webkit.h>
+#include <string.h>
+#include <gdk/gdkkeysyms.h>
 
 static GtkWidget* main_window;
 static GtkWidget* uri_entry;
@@ -136,6 +138,29 @@ go_forward_cb (GtkWidget* widget, gpointer data)
     webkit_web_view_go_forward (web_view);
 }
 
+static gboolean
+key_press_cb (WebKitWebView* page, GdkEventKey* event)
+{
+    gboolean result=FALSE; //TRUE to stop other handlers from being invoked for the event. FALSE to propagate the event further.
+    //BACK
+    if ((event->type==GDK_KEY_PRESS) && (event->keyval==GDK_Left) && (event->state & GDK_MOD1_MASK)) { 
+        webkit_web_view_go_back (web_view);
+       result=TRUE;
+    }
+    //FORWARD
+    if ((event->type==GDK_KEY_PRESS) && (event->keyval==GDK_Right) && (event->state & GDK_MOD1_MASK)) { 
+        webkit_web_view_go_forward (web_view);
+       result=TRUE;
+    }
+    //HOME (KIND OF)
+    if ((event->type==GDK_KEY_PRESS) && ((event->keyval==GDK_H) || (event->keyval==GDK_h)) && (event->state & GDK_MOD1_MASK)) { 
+       webkit_web_view_load_uri (web_view, uri); 
+       result=TRUE;
+    }
+
+    return(result);
+}
+
 static GtkWidget*
 create_browser ()
 {
@@ -149,6 +174,7 @@ create_browser ()
     g_signal_connect (G_OBJECT (web_view), "load-progress-changed", G_CALLBACK (progress_change_cb), web_view);
     g_signal_connect (G_OBJECT (web_view), "load-committed", G_CALLBACK (load_commit_cb), web_view);
     g_signal_connect (G_OBJECT (web_view), "hovering-over-link", G_CALLBACK (link_hover_cb), web_view);
+    g_signal_connect (G_OBJECT (web_view), "key-press-event", G_CALLBACK(key_press_cb), web_view);
 
     return scrolled_window;
 }