[meld] sourceview: Fix Ctrl+Page Up/Down bindings override in textview



commit b73a7befec8b44a5cf0317ed4acc96a5e826d2ec
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Sat Sep 7 06:54:10 2019 +1000

    sourceview: Fix Ctrl+Page Up/Down bindings override in textview
    
    We want to be using the standard GtkNotebook bindings for switching
    pages here, but were getting the GtkTextView horizontal scrolling
    bindings instead.

 meld/sourceview.py | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/meld/sourceview.py b/meld/sourceview.py
index 828b5a3e..7da3b01b 100644
--- a/meld/sourceview.py
+++ b/meld/sourceview.py
@@ -175,6 +175,11 @@ class MeldSourceView(GtkSource.View, SourceViewHelperMixin):
         (Gdk.KEY_KP_Left, Gdk.ModifierType.MOD1_MASK),
         (Gdk.KEY_Right, Gdk.ModifierType.MOD1_MASK),
         (Gdk.KEY_KP_Right, Gdk.ModifierType.MOD1_MASK),
+        # ...and Ctrl+Page Up/Down
+        (Gdk.KEY_Page_Up, Gdk.ModifierType.CONTROL_MASK),
+        (Gdk.KEY_KP_Page_Up, Gdk.ModifierType.CONTROL_MASK),
+        (Gdk.KEY_Page_Down, Gdk.ModifierType.CONTROL_MASK),
+        (Gdk.KEY_KP_Page_Down, Gdk.ModifierType.CONTROL_MASK),
     )
 
     def __init__(self, *args, **kwargs):
@@ -182,9 +187,14 @@ class MeldSourceView(GtkSource.View, SourceViewHelperMixin):
 
         self.drag_dest_add_uri_targets()
 
-        binding_set = Gtk.binding_set_find('GtkSourceView')
-        for key, modifiers in self.replaced_entries:
-            Gtk.binding_entry_remove(binding_set, key, modifiers)
+        # Most bindings are on SourceView, except the Page Up/Down ones
+        # which are on TextView.
+        binding_set_names = ('GtkSourceView', 'GtkTextView')
+        for set_name in binding_set_names:
+            binding_set = Gtk.binding_set_find(set_name)
+            for key, modifiers in self.replaced_entries:
+                Gtk.binding_entry_remove(binding_set, key, modifiers)
+
         self.anim_source_id = None
         self.animating_chunks = []
         self.syncpoints = []


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