[gnome-media] gnome-volume-control: add tabs Alt+N accels
- From: Marc-Andre Lureau <malureau src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnome-media] gnome-volume-control: add tabs Alt+N accels
- Date: Sat, 2 May 2009 07:38:25 -0400 (EDT)
commit 83e88deac2285233b058fea776b33de568805cfc
Author: Marc-André Lureau <marc-andre lureau nokia com>
Date: Sat May 2 14:29:15 2009 +0300
gnome-volume-control: add tabs Alt+N accels
Closes: http://bugzilla.gnome.org/show_bug.cgi?id=574197
---
gnome-volume-control/src/gvc-mixer-dialog.c | 47 +++++++++++++++++++++++++++
1 files changed, 47 insertions(+), 0 deletions(-)
diff --git a/gnome-volume-control/src/gvc-mixer-dialog.c b/gnome-volume-control/src/gvc-mixer-dialog.c
index 573a6c1..758dc54 100644
--- a/gnome-volume-control/src/gvc-mixer-dialog.c
+++ b/gnome-volume-control/src/gvc-mixer-dialog.c
@@ -26,6 +26,7 @@
#include <glib.h>
#include <glib/gi18n.h>
+#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include <gconf/gconf-client.h>
@@ -991,6 +992,32 @@ create_stream_treeview (GvcMixerDialog *dialog,
return treeview;
}
+static const guint tab_accel_keys[] = {
+ GDK_1, GDK_2, GDK_3, GDK_4
+};
+
+static void
+dialog_accel_cb (GtkAccelGroup *accelgroup,
+ GObject *object,
+ guint key,
+ GdkModifierType mod,
+ GvcMixerDialog *self)
+{
+ gint num = -1;
+ gint i;
+
+ for (i = 0; i < G_N_ELEMENTS (tab_accel_keys); i++) {
+ if (tab_accel_keys[i] == key) {
+ num = i;
+ break;
+ }
+ }
+
+ if (num != -1) {
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (self->priv->notebook), num);
+ }
+}
+
static GObject *
gvc_mixer_dialog_constructor (GType type,
guint n_construct_properties,
@@ -1008,6 +1035,9 @@ gvc_mixer_dialog_constructor (GType type,
GSList *l;
GvcMixerStream *stream;
GtkTreeSelection *selection;
+ GtkAccelGroup *accel_group;
+ GClosure *closure;
+ gint i;
object = G_OBJECT_CLASS (gvc_mixer_dialog_parent_class)->constructor (type, n_construct_properties, construct_params);
@@ -1034,6 +1064,23 @@ gvc_mixer_dialog_constructor (GType type,
self->priv->notebook,
TRUE, TRUE, 6);
+ /* Set up accels (borrowed from Empathy) */
+ accel_group = gtk_accel_group_new ();
+ gtk_window_add_accel_group (GTK_WINDOW (self), accel_group);
+
+ for (i = 0; i < G_N_ELEMENTS (tab_accel_keys); i++) {
+ closure = g_cclosure_new (G_CALLBACK (dialog_accel_cb),
+ self,
+ NULL);
+ gtk_accel_group_connect (accel_group,
+ tab_accel_keys[i],
+ GDK_MOD1_MASK,
+ 0,
+ closure);
+ }
+
+ g_object_unref (accel_group);
+
/* Effects page */
self->priv->sound_effects_box = gtk_vbox_new (FALSE, 6);
gtk_container_set_border_width (GTK_CONTAINER (self->priv->sound_effects_box), 12);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]