[epiphany] Fix alt+navigation keys shortcuts



commit 4b16224c66c9b6b79bb0a26412bf184a14ce4387
Author: Jan-Michael Brummer <jan brummer tabos org>
Date:   Tue Jul 30 23:00:25 2019 +0200

    Fix alt+navigation keys shortcuts

 lib/ephy-gui.c  |  5 ++++-
 lib/ephy-gui.h  |  3 ++-
 src/ephy-link.c | 11 +++++++----
 3 files changed, 13 insertions(+), 6 deletions(-)
---
diff --git a/lib/ephy-gui.c b/lib/ephy-gui.c
index 989012fc5..c342b23a0 100644
--- a/lib/ephy-gui.c
+++ b/lib/ephy-gui.c
@@ -85,7 +85,8 @@ ephy_gui_help (GtkWidget  *parent,
 void
 ephy_gui_get_current_event (GdkEventType *otype,
                             guint        *ostate,
-                            guint        *obutton)
+                            guint        *obutton,
+                            guint        *keyval)
 {
   GdkEvent *event;
   GdkEventType type = GDK_NOTHING;
@@ -98,6 +99,8 @@ ephy_gui_get_current_event (GdkEventType *otype,
     if (type == GDK_KEY_PRESS ||
         type == GDK_KEY_RELEASE) {
       state = event->key.state;
+      if (keyval)
+        *keyval = event->key.keyval;
     } else if (type == GDK_BUTTON_PRESS ||
                type == GDK_BUTTON_RELEASE ||
                type == GDK_2BUTTON_PRESS ||
diff --git a/lib/ephy-gui.h b/lib/ephy-gui.h
index 6283e7352..4092f0d64 100644
--- a/lib/ephy-gui.h
+++ b/lib/ephy-gui.h
@@ -28,7 +28,8 @@ GtkWindowGroup *ephy_gui_ensure_window_group             (GtkWindow *window);
 
 void            ephy_gui_get_current_event               (GdkEventType *type,
                                                           guint *state,
-                                                          guint *button);
+                                                          guint *button,
+                                                          guint *keyval);
 
 void            ephy_gui_help                            (GtkWidget *parent,
                                                           const char *page);
diff --git a/src/ephy-link.c b/src/ephy-link.c
index 5bc2a75dd..9f7191f5f 100644
--- a/src/ephy-link.c
+++ b/src/ephy-link.c
@@ -98,10 +98,10 @@ EphyLinkFlags
 ephy_link_flags_from_current_event (void)
 {
   GdkEventType type = GDK_NOTHING;
-  guint state = 0, button = (guint) - 1;
+  guint state = 0, button = (guint) - 1, keyval = (guint) - 1;
   EphyLinkFlags flags = 0;
 
-  ephy_gui_get_current_event (&type, &state, &button);
+  ephy_gui_get_current_event (&type, &state, &button, &keyval);
 
   if (button == 2 && (type == GDK_BUTTON_PRESS || type == GDK_BUTTON_RELEASE)) {
     if (state == GDK_SHIFT_MASK) {
@@ -110,9 +110,12 @@ ephy_link_flags_from_current_event (void)
       flags = EPHY_LINK_NEW_TAB | EPHY_LINK_NEW_TAB_APPEND_AFTER;
     }
   } else {
-    if (state == (GDK_MOD1_MASK | GDK_SHIFT_MASK)) {
+    gboolean navigation_keys = (keyval == GDK_KEY_Left) || (keyval == GDK_KEY_Right);
+
+    if (((state == (GDK_MOD1_MASK | GDK_SHIFT_MASK)) && !navigation_keys) ||
+        (state == (GDK_CONTROL_MASK | GDK_SHIFT_MASK))) {
       flags = EPHY_LINK_NEW_WINDOW;
-    } else if (state == GDK_MOD1_MASK) {
+    } else if (((state == GDK_MOD1_MASK) && !navigation_keys) || (state == GDK_CONTROL_MASK)) {
       flags = EPHY_LINK_NEW_TAB | EPHY_LINK_NEW_TAB_APPEND_AFTER | EPHY_LINK_JUMP_TO;
     }
   }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]