summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorMichael Natterer <mitch@lanedo.com>2011-11-18 15:14:31 +0100
committerMichael Natterer <mitch@gimp.org>2011-11-18 15:14:31 +0100
commit9c79f9f868617a918e301c14ebeeff1bdc4c7e9d (patch)
tree5f0ad8393b830c1ff6d8b150937b1e6e6011b487 /gdk
parent1c8481a6ea52f34210177f54159d231ea4ba0b7d (diff)
downloadgtk+-9c79f9f868617a918e301c14ebeeff1bdc4c7e9d.tar.gz
Turn the private #define for the group-shifting modifier into API
Add GDK_MODIFIER_INTENT_SHIFT_GROUP to enum GdkModifierIntent and handle it in gdk_keymap_get_modifier_mask(). Add an X11 impl of the method and return keymap_x11->group_switch_mask. Return 0 from the default impl because we don't know.
Diffstat (limited to 'gdk')
-rw-r--r--gdk/gdkkeys.c3
-rw-r--r--gdk/gdktypes.h5
-rw-r--r--gdk/quartz/gdkkeys-quartz.c3
-rw-r--r--gdk/x11/gdkkeys-x11.c18
4 files changed, 28 insertions, 1 deletions
diff --git a/gdk/gdkkeys.c b/gdk/gdkkeys.c
index a12d68d493..bd3f7dd7a9 100644
--- a/gdk/gdkkeys.c
+++ b/gdk/gdkkeys.c
@@ -634,6 +634,9 @@ gdk_keymap_real_get_modifier_mask (GdkKeymap *keymap,
case GDK_MODIFIER_INTENT_NO_TEXT_INPUT:
return GDK_MOD1_MASK | GDK_CONTROL_MASK;
+ case GDK_MODIFIER_INTENT_SHIFT_GROUP:
+ return 0;
+
default:
g_return_val_if_reached (0);
}
diff --git a/gdk/gdktypes.h b/gdk/gdktypes.h
index a0ea89368d..577ab96bd7 100644
--- a/gdk/gdktypes.h
+++ b/gdk/gdktypes.h
@@ -257,6 +257,8 @@ typedef enum
* @GDK_MODIFIER_INTENT_NO_TEXT_INPUT: when any of these modifiers is pressed, the
* key event cannot produce a symbol directly. This is meant to be used for
* input methods, and for use cases like typeahead search.
+ * @GDK_MODIFIER_INTENT_SHIFT_GROUP: the modifier that switches between keyboard
+ * groups (AltGr on X11/Windows and Option/Alt on OS X).
*
* This enum is used with gdk_keymap_get_modifier_mask() and
* gdk_get_modifier_mask() in order to determine what modifiers the
@@ -274,7 +276,8 @@ typedef enum
GDK_MODIFIER_INTENT_CONTEXT_MENU,
GDK_MODIFIER_INTENT_EXTEND_SELECTION,
GDK_MODIFIER_INTENT_MODIFY_SELECTION,
- GDK_MODIFIER_INTENT_NO_TEXT_INPUT
+ GDK_MODIFIER_INTENT_NO_TEXT_INPUT,
+ GDK_MODIFIER_INTENT_SHIFT_GROUP
} GdkModifierIntent;
typedef enum
diff --git a/gdk/quartz/gdkkeys-quartz.c b/gdk/quartz/gdkkeys-quartz.c
index 07d8489740..1156591abf 100644
--- a/gdk/quartz/gdkkeys-quartz.c
+++ b/gdk/quartz/gdkkeys-quartz.c
@@ -757,6 +757,9 @@ gdk_quartz_keymap_get_modifier_mask (GdkKeymap *keymap,
case GDK_MODIFIER_INTENT_NO_TEXT_INPUT:
return GDK_MOD2_MASK | GDK_CONTROL_MASK;
+ case GDK_MODIFIER_INTENT_SHIFT_GROUP:
+ return GDK_MOD1_MASK;
+
default:
g_return_val_if_reached (0);
}
diff --git a/gdk/x11/gdkkeys-x11.c b/gdk/x11/gdkkeys-x11.c
index 80bf7113e6..ec5d0ec89a 100644
--- a/gdk/x11/gdkkeys-x11.c
+++ b/gdk/x11/gdkkeys-x11.c
@@ -1609,6 +1609,23 @@ gdk_x11_keymap_map_virtual_modifiers (GdkKeymap *keymap,
return retval;
}
+static GdkModifierType
+gdk_x11_keymap_get_modifier_mask (GdkKeymap *keymap,
+ GdkModifierIntent intent)
+{
+ GdkX11Keymap *keymap_x11 = GDK_X11_KEYMAP (keymap);
+
+ switch (intent)
+ {
+ case GDK_MODIFIER_INTENT_SHIFT_GROUP:
+ return keymap_x11->group_switch_mask;
+
+ default:
+ GDK_KEYMAP_CLASS (gdk_x11_keymap_parent_class)->get_modifier_mask (keymap,
+ intent);
+ }
+}
+
static void
gdk_x11_keymap_class_init (GdkX11KeymapClass *klass)
{
@@ -1627,4 +1644,5 @@ gdk_x11_keymap_class_init (GdkX11KeymapClass *klass)
keymap_class->translate_keyboard_state = gdk_x11_keymap_translate_keyboard_state;
keymap_class->add_virtual_modifiers = gdk_x11_keymap_add_virtual_modifiers;
keymap_class->map_virtual_modifiers = gdk_x11_keymap_map_virtual_modifiers;
+ keymap_class->get_modifier_mask = gdk_x11_keymap_get_modifier_mask;
}