From fe203524fefd52f41e7c99cefa7a8020ba8469ba Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Sun, 28 Feb 2010 23:41:54 +0100 Subject: [PATCH] Implement Scroll actions, defaulting to Vim direction keys --- midori/midori-browser.c | 44 +++++++++++++++++++++++++++++++++++++++++ midori/midori-view.c | 6 ++++-- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/midori/midori-browser.c b/midori/midori-browser.c index f5c41d65..9041d3dd 100644 --- a/midori/midori-browser.c +++ b/midori/midori-browser.c @@ -3647,6 +3647,32 @@ _action_fullscreen_activate (GtkAction* action, gtk_window_fullscreen (GTK_WINDOW (browser)); } +#if WEBKIT_CHECK_VERSION (1, 1, 4) +static void +_action_scroll_somewhere_activate (GtkAction* action, + MidoriBrowser* browser) +{ + GtkWidget* view; + WebKitWebView* web_view; + const gchar* name; + + view = midori_browser_get_current_tab (browser); + if (!view) + return; + web_view = WEBKIT_WEB_VIEW (gtk_bin_get_child (GTK_BIN (view))); + name = gtk_action_get_name (action); + + if (g_str_equal (name, "ScrollLeft")) + webkit_web_view_move_cursor (web_view, GTK_MOVEMENT_VISUAL_POSITIONS, -1); + if (g_str_equal (name, "ScrollDown")) + webkit_web_view_move_cursor (web_view, GTK_MOVEMENT_DISPLAY_LINES, 1); + else if (g_str_equal (name, "ScrollUp")) + webkit_web_view_move_cursor (web_view, GTK_MOVEMENT_DISPLAY_LINES, -1); + else if (g_str_equal (name, "ScrollRight")) + webkit_web_view_move_cursor (web_view, GTK_MOVEMENT_VISUAL_POSITIONS, 1); +} +#endif + static void _action_back_activate (GtkAction* action, MidoriBrowser* browser) @@ -5366,6 +5392,20 @@ static const GtkActionEntry entries[] = { { "Fullscreen", GTK_STOCK_FULLSCREEN, NULL, "F11", N_("Toggle fullscreen view"), G_CALLBACK (_action_fullscreen_activate) }, + #if WEBKIT_CHECK_VERSION (1, 1, 4) + { "ScrollLeft", NULL, + N_("Scroll _Left"), "h", + N_("Scroll to the left"), G_CALLBACK (_action_scroll_somewhere_activate) }, + { "ScrollDown", NULL, + N_("Scroll _Down"), "j", + N_("Scroll down"), G_CALLBACK (_action_scroll_somewhere_activate) }, + { "ScrollUp", NULL, + N_("Scroll _Up"), "k", + N_("Scroll up"), G_CALLBACK (_action_scroll_somewhere_activate) }, + { "ScrollRight", NULL, + N_("Scroll _Right"), "l", + N_("Scroll to the right"), G_CALLBACK (_action_scroll_somewhere_activate) }, + #endif { "Go", NULL, N_("_Go") }, { "Back", GTK_STOCK_GO_BACK, @@ -5692,6 +5732,10 @@ static const gchar* ui_markup = /* For accelerators to work all actions need to be used *somewhere* in the UI definition */ "" + "" + "" + "" + "" "" "" "" diff --git a/midori/midori-view.c b/midori/midori-view.c index a2487ca9..3bd811ea 100644 --- a/midori/midori-view.c +++ b/midori/midori-view.c @@ -1385,11 +1385,13 @@ gtk_widget_key_press_event_cb (WebKitWebView* web_view, GdkEventKey* event, MidoriView* view) { - guint character = gdk_unicode_to_keyval (event->keyval); + guint character; if (event->keyval == '.' || event->keyval == '/' || event->keyval == GDK_KP_Divide) character = '\0'; - else if (!view->find_while_typing) + else if (view->find_while_typing) + character = gdk_unicode_to_keyval (event->keyval); + else return FALSE; /* Skip control characters */