diff options
-rw-r--r-- | gtk/gtkimcontextsimple.c | 2 | ||||
-rw-r--r-- | gtk/gtkimmulticontext.c | 2 | ||||
-rw-r--r-- | gtk/gtkprivate.h | 10 |
3 files changed, 12 insertions, 2 deletions
diff --git a/gtk/gtkimcontextsimple.c b/gtk/gtkimcontextsimple.c index 68f7578363..1ef6b16be1 100644 --- a/gtk/gtkimcontextsimple.c +++ b/gtk/gtkimcontextsimple.c @@ -895,7 +895,7 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context, (priv->in_hex_sequence && !hex_keyval && !is_hex_start && !is_hex_end && !is_escape && !is_backspace)) { - if (event->state & (GDK_MOD1_MASK | GDK_CONTROL_MASK) || + if (event->state & GTK_NO_TEXT_INPUT_MOD_MASK || (priv->in_hex_sequence && priv->modifiers_dropped && (event->keyval == GDK_KEY_Return || event->keyval == GDK_KEY_ISO_Enter || diff --git a/gtk/gtkimmulticontext.c b/gtk/gtkimmulticontext.c index ea471a8aaf..28a218d65b 100644 --- a/gtk/gtkimmulticontext.c +++ b/gtk/gtkimmulticontext.c @@ -350,7 +350,7 @@ gtk_im_multicontext_filter_keypress (GtkIMContext *context, if (slave) return gtk_im_context_filter_keypress (slave, event); else if (event->type == GDK_KEY_PRESS && - (event->state & (GDK_MOD1_MASK | GDK_CONTROL_MASK)) == 0) + (event->state & GTK_NO_TEXT_INPUT_MOD_MASK) == 0) { gunichar ch; diff --git a/gtk/gtkprivate.h b/gtk/gtkprivate.h index 458a4b95ae..d92affe6b2 100644 --- a/gtk/gtkprivate.h +++ b/gtk/gtkprivate.h @@ -67,6 +67,16 @@ const gchar *_gtk_get_data_prefix (); #define GTK_DEFAULT_ACCEL_MOD_MASK GDK_META_MASK #endif +/* When any of these modifiers are active, a key + * event cannot produce a symbol, so should be + * skipped when handling text input + */ +#ifndef GDK_WINDOWING_QUARTZ +#define GTK_NO_TEXT_INPUT_MOD_MASK (GDK_MOD1_MASK | GDK_CONTROL_MASK) +#else +#define GTK_NO_TEXT_INPUT_MOD_MASK (GDK_MOD2_MASK | GDK_CONTROL_MASK) +#endif + gboolean _gtk_fnmatch (const char *pattern, const char *string, gboolean no_leading_period); |