Implement Scroll actions, defaulting to Vim direction keys
This commit is contained in:
parent
3f886f7153
commit
fe203524fe
2 changed files with 48 additions and 2 deletions
|
@ -3647,6 +3647,32 @@ _action_fullscreen_activate (GtkAction* action,
|
||||||
gtk_window_fullscreen (GTK_WINDOW (browser));
|
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
|
static void
|
||||||
_action_back_activate (GtkAction* action,
|
_action_back_activate (GtkAction* action,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
|
@ -5366,6 +5392,20 @@ static const GtkActionEntry entries[] = {
|
||||||
{ "Fullscreen", GTK_STOCK_FULLSCREEN,
|
{ "Fullscreen", GTK_STOCK_FULLSCREEN,
|
||||||
NULL, "F11",
|
NULL, "F11",
|
||||||
N_("Toggle fullscreen view"), G_CALLBACK (_action_fullscreen_activate) },
|
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") },
|
{ "Go", NULL, N_("_Go") },
|
||||||
{ "Back", GTK_STOCK_GO_BACK,
|
{ "Back", GTK_STOCK_GO_BACK,
|
||||||
|
@ -5692,6 +5732,10 @@ static const gchar* ui_markup =
|
||||||
/* For accelerators to work all actions need to be used
|
/* For accelerators to work all actions need to be used
|
||||||
*somewhere* in the UI definition */
|
*somewhere* in the UI definition */
|
||||||
"<menu action='Dummy'>"
|
"<menu action='Dummy'>"
|
||||||
|
"<menuitem action='ScrollLeft'/>"
|
||||||
|
"<menuitem action='ScrollDown'/>"
|
||||||
|
"<menuitem action='ScrollUp'/>"
|
||||||
|
"<menuitem action='ScrollRight'/>"
|
||||||
"<menuitem action='FindPrevious'/>"
|
"<menuitem action='FindPrevious'/>"
|
||||||
"<menuitem action='BookmarkAdd'/>"
|
"<menuitem action='BookmarkAdd'/>"
|
||||||
"<menuitem action='BookmarkFolderAdd'/>"
|
"<menuitem action='BookmarkFolderAdd'/>"
|
||||||
|
|
|
@ -1385,11 +1385,13 @@ gtk_widget_key_press_event_cb (WebKitWebView* web_view,
|
||||||
GdkEventKey* event,
|
GdkEventKey* event,
|
||||||
MidoriView* view)
|
MidoriView* view)
|
||||||
{
|
{
|
||||||
guint character = gdk_unicode_to_keyval (event->keyval);
|
guint character;
|
||||||
|
|
||||||
if (event->keyval == '.' || event->keyval == '/' || event->keyval == GDK_KP_Divide)
|
if (event->keyval == '.' || event->keyval == '/' || event->keyval == GDK_KP_Divide)
|
||||||
character = '\0';
|
character = '\0';
|
||||||
else if (!view->find_while_typing)
|
else if (view->find_while_typing)
|
||||||
|
character = gdk_unicode_to_keyval (event->keyval);
|
||||||
|
else
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* Skip control characters */
|
/* Skip control characters */
|
||||||
|
|
Loading…
Reference in a new issue