diff options
author | Michael Natterer <mitch@lanedo.com> | 2011-11-18 15:14:31 +0100 |
---|---|---|
committer | Michael Natterer <mitch@gimp.org> | 2011-11-18 15:14:31 +0100 |
commit | 9c79f9f868617a918e301c14ebeeff1bdc4c7e9d (patch) | |
tree | 5f0ad8393b830c1ff6d8b150937b1e6e6011b487 /gdk | |
parent | 1c8481a6ea52f34210177f54159d231ea4ba0b7d (diff) | |
download | gtk+-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.c | 3 | ||||
-rw-r--r-- | gdk/gdktypes.h | 5 | ||||
-rw-r--r-- | gdk/quartz/gdkkeys-quartz.c | 3 | ||||
-rw-r--r-- | gdk/x11/gdkkeys-x11.c | 18 |
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; } |