[gitg] Added keybindings for switching activities
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gitg] Added keybindings for switching activities
- Date: Sun, 13 Jul 2014 09:39:27 +0000 (UTC)
commit 5255a7fe5cd84ae8a33dab1aab9eac86876b85a4
Author: Jesse van den Kieboom <jessevdk gnome org>
Date: Sun Jul 13 11:33:22 2014 +0200
Added keybindings for switching activities
For now, the keybindings are Alt+<N>, where <N> is the index of the
activity as shown in stack switcher (much like in tab switching).
https://bugzilla.gnome.org/show_bug.cgi?id=633706
gitg/gitg-ui-elements.vala | 15 ++++++++++++++
gitg/gitg-window.vala | 46 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 61 insertions(+), 0 deletions(-)
---
diff --git a/gitg/gitg-ui-elements.vala b/gitg/gitg-ui-elements.vala
index ca18967..ba1a72c 100644
--- a/gitg/gitg-ui-elements.vala
+++ b/gitg/gitg-ui-elements.vala
@@ -52,6 +52,21 @@ public class UIElements<T> : Object
}
}
+ public T[] available_elements
+ {
+ owned get
+ {
+ var ret = new T[0];
+
+ foreach (var elem in d_available_elements)
+ {
+ ret += (T)elem;
+ }
+
+ return ret;
+ }
+ }
+
public void update()
{
// Update active elements based on availability
diff --git a/gitg/gitg-window.vala b/gitg/gitg-window.vala
index 121327a..be1db33 100644
--- a/gitg/gitg-window.vala
+++ b/gitg/gitg-window.vala
@@ -84,6 +84,39 @@ public class Window : Gtk.ApplicationWindow, GitgExt.Application, Initable
private Mode d_mode;
+ [Signal(action = true)]
+ public virtual signal bool change_to_activity(int i)
+ {
+ if (i == 0)
+ {
+ if (d_mode == Mode.ACTIVITY)
+ {
+ repository = null;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ if (d_mode != Mode.ACTIVITY)
+ {
+ return false;
+ }
+
+ var elems = d_activities.available_elements;
+ i--;
+
+ if (i >= elems.length)
+ {
+ return false;
+ }
+
+ d_activities.current = elems[i];
+ return true;
+ }
+
private static const ActionEntry[] win_entries = {
{"search", on_search_activated, null, "false", null},
{"gear-menu", on_gear_menu_activated, null, "false", null},
@@ -188,6 +221,19 @@ public class Window : Gtk.ApplicationWindow, GitgExt.Application, Initable
d_infobar.response.connect((w, r) => {
d_infobar.hide();
});
+
+ unowned Gtk.BindingSet bset = Gtk.BindingSet.by_class(get_class());
+
+ for (int i = 0; i < 10; i++)
+ {
+ Gtk.BindingEntry.add_signal(bset,
+ (Gdk Key 0 + i),
+ Gdk.ModifierType.MOD1_MASK,
+ "change-to-activity",
+ 1,
+ typeof(int),
+ i);
+ }
}
private void on_close_activated()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]