diff options
author | Sebastien Bacher <seb128@ubuntu.com> | 2010-03-04 14:48:12 +0100 |
---|---|---|
committer | Sebastien Bacher <seb128@ubuntu.com> | 2010-03-04 14:48:12 +0100 |
commit | 39cc953dc802c485d690fbbac77eaa6364818680 (patch) | |
tree | 6093abf6d518c69167acbbbfaee97945118a9e60 /src/indicator-sound.c | |
parent | c98bccb2b14f088b4fa04fbdb3d328c4deda3312 (diff) | |
parent | cb864e17102163154fa313d5f9344e9c6c2cbe16 (diff) | |
download | ayatana-indicator-sound-39cc953dc802c485d690fbbac77eaa6364818680.tar.gz ayatana-indicator-sound-39cc953dc802c485d690fbbac77eaa6364818680.tar.bz2 ayatana-indicator-sound-39cc953dc802c485d690fbbac77eaa6364818680.zip |
Import upstream version 0.1.2
Diffstat (limited to 'src/indicator-sound.c')
-rw-r--r-- | src/indicator-sound.c | 84 |
1 files changed, 46 insertions, 38 deletions
diff --git a/src/indicator-sound.c b/src/indicator-sound.c index 8e79db6..1301916 100644 --- a/src/indicator-sound.c +++ b/src/indicator-sound.c @@ -432,54 +432,62 @@ key_press_cb: **/ static gboolean key_press_cb(GtkWidget* widget, GdkEventKey* event, gpointer data) { - if (current_state == STATE_MUTED) - return FALSE; + gboolean digested = FALSE; GtkWidget* slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)volume_slider); GtkRange* range = (GtkRange*)slider; gdouble current_value = gtk_range_get_value(range); gdouble new_value = current_value; const gdouble five_percent = 5; + GtkWidget *menuitem; - switch(event->keyval) - { - case GDK_Right: - if(event->state & GDK_CONTROL_MASK) - { - new_value = 100; - } - else - { - new_value = current_value + five_percent; - } - break; - case GDK_Left: - if(event->state & GDK_CONTROL_MASK) - { - new_value = 0; - } - else + menuitem = GTK_MENU_SHELL (widget)->active_menu_item; + if(IDO_IS_SCALE_MENU_ITEM(menuitem) == TRUE) + { + switch(event->keyval) { - new_value = current_value - five_percent; - } - break; - case GDK_plus: + case GDK_Right: + digested = TRUE; + if(event->state & GDK_CONTROL_MASK) + { + new_value = 100; + } + else + { + new_value = current_value + five_percent; + } + break; + case GDK_Left: + digested = TRUE; + if(event->state & GDK_CONTROL_MASK) + { + new_value = 0; + } + else + { + new_value = current_value - five_percent; + } + break; + case GDK_plus: + digested = TRUE; new_value = current_value + five_percent; - break; - case GDK_minus: + break; + case GDK_minus: + digested = TRUE; new_value = current_value - five_percent; - break; - default: - break; - } - - new_value = CLAMP(new_value, 0, 100); - if(new_value != current_value) - { - g_debug("Attempting to set the range from the key listener to %f", new_value); - gtk_range_set_value(range, new_value); - } - return FALSE; + break; + default: + break; + } + + new_value = CLAMP(new_value, 0, 100); + if(new_value != current_value && current_state != STATE_MUTED) + { + g_debug("Attempting to set the range from the key listener to %f", new_value); + gtk_range_set_value(range, new_value); + } + } + return digested; } /** |