[eog] Test for modifier keys correctly in EogWindow



commit 32cc9464461ef0326d3ecb27a494b1af2d8101eb
Author: Federico Mena Quintero <federico gnome org>
Date:   Wed Aug 29 17:38:11 2012 -0500

    Test for modifier keys correctly in EogWindow
    
    See http://developer.gnome.org/gtk3/stable/checklist-modifiers.html for an explanation
    of how this works.
    
    Signed-off-by: Federico Mena Quintero <federico gnome org>
    
    https://bugzilla.gnome.org/show_bug.cgi?id=659830

 src/eog-window.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)
---
diff --git a/src/eog-window.c b/src/eog-window.c
index 2b974fc..a3a1e34 100644
--- a/src/eog-window.c
+++ b/src/eog-window.c
@@ -4891,22 +4891,25 @@ eog_window_key_press (GtkWidget *widget, GdkEventKey *event)
 	GtkContainer *tbcontainer = GTK_CONTAINER ((EOG_WINDOW (widget)->priv->toolbar));
 	gint result = FALSE;
 	gboolean handle_selection = FALSE;
+	GdkModifierType modifiers;
+
+	modifiers = gtk_accelerator_get_default_mod_mask ();
 
 	switch (event->keyval) {
 	case GDK_KEY_space:
-		if (event->state & GDK_CONTROL_MASK) {
+		if ((event->state & modifiers) == GDK_CONTROL_MASK) {
 			handle_selection = TRUE;
 			break;
 		}
 	case GDK_KEY_Return:
 		if (gtk_container_get_focus_child (tbcontainer) == NULL) {
 			/* Image properties dialog case */
-			if (event->state & GDK_MOD1_MASK) {
+			if ((event->state & modifiers) == GDK_MOD1_MASK) {
 				result = FALSE;
 				break;
 			}
 
-			if (event->state & GDK_SHIFT_MASK) {
+			if ((event->state & modifiers) == GDK_SHIFT_MASK) {
 				eog_window_cmd_go_prev (NULL, EOG_WINDOW (widget));
 			} else {
 				eog_window_cmd_go_next (NULL, EOG_WINDOW (widget));
@@ -4936,7 +4939,7 @@ eog_window_key_press (GtkWidget *widget, GdkEventKey *event)
 		}
 		break;
 	case GDK_KEY_Left:
-		if (event->state & GDK_MOD1_MASK) {
+		if ((event->state & modifiers) == GDK_MOD1_MASK) {
 			/* Alt+Left moves to previous image */
 			if (is_rtl) { /* move to next in RTL mode */
 				eog_window_cmd_go_next (NULL, EOG_WINDOW (widget));
@@ -4967,7 +4970,7 @@ eog_window_key_press (GtkWidget *widget, GdkEventKey *event)
 			break;
 		}
 	case GDK_KEY_Right:
-		if (event->state & GDK_MOD1_MASK) {
+		if ((event->state & modifiers) == GDK_MOD1_MASK) {
 			/* Alt+Right moves to next image */
 			if (is_rtl) { /* move to previous in RTL mode */
 				eog_window_cmd_go_prev (NULL, EOG_WINDOW (widget));



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