]> Pileus Git - ~andy/gtk/commitdiff
gtk: fix entering of Option-foo symbols on the Mac
authorMichael Natterer <mitch@lanedo.com>
Fri, 16 Sep 2011 14:10:06 +0000 (16:10 +0200)
committerMichael Natterer <mitch@gimp.org>
Mon, 26 Sep 2011 14:01:50 +0000 (16:01 +0200)
define GTK_NO_TEXT_INPUT_MOD_MASK in gtkprivate.h
and use it in the IM contexts, so Option-foo is no longer
filtered away.

gtk/gtkimcontextsimple.c
gtk/gtkimmulticontext.c
gtk/gtkprivate.h

index 68f75783636541879722caf35f038afc91c826d4..1ef6b16be1a3504adde595ca434f523d4e2420a2 100644 (file)
@@ -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 ||
index ea471a8aaf3ed0d7b2a25a741cf422a343debd87..28a218d65b37e3b28a4aca29f388c7b1c4c21d6a 100644 (file)
@@ -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;
 
index 458a4b95aefe6a5f5c2c1f71923668e1db11fac5..d92affe6b2f6c915cc6b30e817c69125e7d3cdfa 100644 (file)
@@ -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);