diff options
author | Matthias Clasen <mclasen@redhat.com> | 2015-08-29 12:23:18 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2015-08-29 18:09:58 -0400 |
commit | b371fb09fb3034d3ca25c4eaba10e0b861478773 (patch) | |
tree | cf74e7df0518c33bef7d6321dfe822c55e9d15e6 /gtk/gtkaccelgroup.c | |
parent | e6b3805c27358065ced83b3c93f67ac66dd3203a (diff) | |
download | gtk+-b371fb09fb3034d3ca25c4eaba10e0b861478773.tar.gz |
accel group: Make gtk_accelerator_get_default_mod_mask more lenient
Make this function harmless to call without an open display connection.
This happens during gobject introspection, which instantiates GTK+
types without calling gtk_init.
Diffstat (limited to 'gtk/gtkaccelgroup.c')
-rw-r--r-- | gtk/gtkaccelgroup.c | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/gtk/gtkaccelgroup.c b/gtk/gtkaccelgroup.c index 15a27d48d4..d4c04402e2 100644 --- a/gtk/gtkaccelgroup.c +++ b/gtk/gtkaccelgroup.c @@ -1719,11 +1719,12 @@ gtk_accelerator_get_label (guint accelerator_key, * @default_mod_mask: accelerator modifier mask * * Sets the modifiers that will be considered significant for keyboard - * accelerators. The default mod mask is #GDK_CONTROL_MASK | - * #GDK_SHIFT_MASK | #GDK_MOD1_MASK | #GDK_SUPER_MASK | - * #GDK_HYPER_MASK | #GDK_META_MASK, that is, Control, Shift, Alt, - * Super, Hyper and Meta. Other modifiers will by default be ignored - * by #GtkAccelGroup. + * accelerators. The default mod mask depends on the GDK backend in use, + * but will typically include #GDK_CONTROL_MASK | #GDK_SHIFT_MASK | + * #GDK_MOD1_MASK | #GDK_SUPER_MASK | #GDK_HYPER_MASK | #GDK_META_MASK. + * In other words, Control, Shift, Alt, Super, Hyper and Meta. Other + * modifiers will by default be ignored by #GtkAccelGroup. + * * You must include at least the three modifiers Control, Shift * and Alt in any value you pass to this function. * @@ -1740,7 +1741,10 @@ gtk_accelerator_set_default_mod_mask (GdkModifierType default_mod_mask) /** * gtk_accelerator_get_default_mod_mask: * - * Gets the value set by gtk_accelerator_set_default_mod_mask(). + * Gets the modifier mask. + * + * The modifier mask determines which modifiers are considered significant + * for keyboard accelerators. See gtk_accelerator_set_default_mod_mask(). * * Returns: the default accelerator modifier mask */ @@ -1748,9 +1752,18 @@ GdkModifierType gtk_accelerator_get_default_mod_mask (void) { if (!default_accel_mod_mask) - default_accel_mod_mask = - gdk_keymap_get_modifier_mask (gdk_keymap_get_default (), - GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK); + { + GdkDisplay *display; + + display = gdk_display_get_default (); + + if (!display) + return GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK; + + default_accel_mod_mask = + gdk_keymap_get_modifier_mask (gdk_keymap_get_for_display (display), + GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK); + } return default_accel_mod_mask; } |