[gnome-clocks] Switch pages with ctrl+alt+page_up/down



commit 32cc13a6fa76ca8bf90aa750f8d5149d8bf7c81a
Author: Paolo Borelli <pborelli gnome org>
Date:   Wed Dec 9 23:41:30 2015 +0100

    Switch pages with ctrl+alt+page_up/down

 src/window.vala |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)
---
diff --git a/src/window.vala b/src/window.vala
index 4fb8bfc..a770e35 100644
--- a/src/window.vala
+++ b/src/window.vala
@@ -113,6 +113,20 @@ public class Window : Gtk.ApplicationWindow {
             stack.child_set_property (timer, "needs-attention", timer.state == Timer.Face.State.RUNNING);
         });
 
+        unowned Gtk.BindingSet binding_set = Gtk.BindingSet.by_class (get_class ());
+
+        // plain ctrl+page_up/down is easten by the scrolled window...
+        Gtk.BindingEntry.add_signal (binding_set,
+                                     Gdk.Key.Page_Up,
+                                     Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.MOD1_MASK,
+                                     "change-page", 1,
+                                     typeof(int), -1);
+        Gtk.BindingEntry.add_signal (binding_set,
+                                     Gdk.Key.Page_Down,
+                                     Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.MOD1_MASK,
+                                     "change-page", 1,
+                                     typeof(int), 1);
+
         stack.visible_child = panels[settings.get_enum ("panel-id")];
 
         update_header_bar ();
@@ -120,6 +134,19 @@ public class Window : Gtk.ApplicationWindow {
         show_all ();
     }
 
+    [Signal(action = true)]
+    public virtual signal void change_page (int offset) {
+        int page;
+
+        stack.child_get (stack.visible_child, "position", out page);
+        page += offset;
+        if (page >= 0 && page < panels.length) {
+            stack.visible_child = panels[page];
+        } else {
+            stack.error_bell ();
+        }
+    }
+
     private void on_new_activate () {
         ((Clock) stack.visible_child).activate_new ();
     }


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