[gitg/wip/albfan/history-panel-shorcuts] Add shortcuts for history panels



commit 0d97db8a850fc1f51834d7d6fb126c44bc91caa0
Author: Alberto Fanjul <albertofanjul gmail com>
Date:   Wed Feb 5 01:42:36 2020 +0100

    Add shortcuts for history panels

 gitg/history/gitg-history.vala          | 17 +++++++++++++++++
 libgitg-ext/gitg-ext-history-panel.vala | 11 +++++++++++
 plugins/diff/gitg-diff.vala             |  5 +++++
 plugins/files/gitg-files.vala           |  5 +++++
 4 files changed, 38 insertions(+)
---
diff --git a/gitg/history/gitg-history.vala b/gitg/history/gitg-history.vala
index fc5d93cb..8d982e4f 100644
--- a/gitg/history/gitg-history.vala
+++ b/gitg/history/gitg-history.vala
@@ -552,6 +552,23 @@ namespace GitgHistory
                        });
                }
 
+               public bool on_key_pressed (Gdk.EventKey event) {
+                       var mmask = Gtk.accelerator_get_default_mod_mask();
+
+                       if ((mmask & event.state) == Gdk.ModifierType.MOD1_MASK)
+                       {
+                               foreach(var element in d_panels.get_available_elements()) {
+                                        GitgExt.HistoryPanel panel = (GitgExt.HistoryPanel)element;
+                                       uint? key = panel.shortcut;
+                                       if (key != null && key == Gdk.keyval_to_lower(event.keyval)) {
+                                               panel.activate();
+                                               return true;
+                                       }
+                               };
+                       }
+                       return false;
+               }
+
                private void build_ui()
                {
                        d_main = new Paned();
diff --git a/libgitg-ext/gitg-ext-history-panel.vala b/libgitg-ext/gitg-ext-history-panel.vala
index baeb084f..5a12ddf4 100644
--- a/libgitg-ext/gitg-ext-history-panel.vala
+++ b/libgitg-ext/gitg-ext-history-panel.vala
@@ -42,6 +42,17 @@ public interface HistoryPanel : Object, UIElement
         * is created.
         */
        public abstract GitgExt.History? history { owned get; construct set; }
+
+       /**
+        * The ui element shortcut.
+        *
+        * If provided, the key to mix with Gdk.ModifierType.MOD1_MASK to enable
+        * this element
+        */
+       public virtual uint? shortcut
+       {
+               owned get { return null; }
+       }
 }
 
 }
diff --git a/plugins/diff/gitg-diff.vala b/plugins/diff/gitg-diff.vala
index 51d18706..324780fb 100644
--- a/plugins/diff/gitg-diff.vala
+++ b/plugins/diff/gitg-diff.vala
@@ -32,6 +32,11 @@ namespace GitgDiff
 
                private ulong d_selection_changed_id;
 
+               public virtual uint? shortcut
+               {
+                       owned get { return Gdk.Key.d; }
+               }
+
                protected override void constructed()
                {
                        base.constructed();
diff --git a/plugins/files/gitg-files.vala b/plugins/files/gitg-files.vala
index 9adb63d2..b878fc7a 100644
--- a/plugins/files/gitg-files.vala
+++ b/plugins/files/gitg-files.vala
@@ -48,6 +48,11 @@ namespace GitgFiles
                        history.selection_changed.connect(on_selection_changed);
                }
 
+               public virtual uint? shortcut
+               {
+                       owned get { return Gdk.Key.f; }
+               }
+
                public string id
                {
                        owned get { return "/org/gnome/gitg/Panels/Files"; }


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