imcontextsimple: ensure W32 code only runs on W32 displays
authorРуслан Ижбулатов <lrn1986@gmail.com>
Thu, 26 Apr 2018 17:42:49 +0000 (17:42 +0000)
committerРуслан Ижбулатов <lrn1986@gmail.com>
Thu, 26 Apr 2018 17:50:55 +0000 (17:50 +0000)
gdk_win32_keymap_check_compose() shouldn't be called for
non-W32 displays (i.e. when using broadway or other backends
that could be made to run on Windows).

gtk/gtkimcontextsimple.c

index af41cc5d14d36900aa72e8dd10346b67d15e0626..3ba25d276502f5c0608990f17edea63433929daa 100644 (file)
@@ -1238,28 +1238,31 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
       gboolean success = FALSE;
 
 #ifdef GDK_WINDOWING_WIN32
-      guint16  output[2];
-      gsize    output_size = 2;
-
-      switch (gdk_win32_keymap_check_compose (GDK_WIN32_KEYMAP (keymap),
-                                              priv->compose_buffer,
-                                              n_compose,
-                                              output, &output_size))
+      if (GDK_IS_WIN32_DISPLAY (display))
         {
-        case GDK_WIN32_KEYMAP_MATCH_NONE:
-          break;
-        case GDK_WIN32_KEYMAP_MATCH_EXACT:
-        case GDK_WIN32_KEYMAP_MATCH_PARTIAL:
-          for (i = 0; i < output_size; i++)
+          guint16  output[2];
+          gsize    output_size = 2;
+
+          switch (gdk_win32_keymap_check_compose (GDK_WIN32_KEYMAP (keymap),
+                                                  priv->compose_buffer,
+                                                  n_compose,
+                                                  output, &output_size))
             {
-              output_char = gdk_keyval_to_unicode (output[i]);
-              gtk_im_context_simple_commit_char (GTK_IM_CONTEXT (context_simple),
-                                                 output_char);
+            case GDK_WIN32_KEYMAP_MATCH_NONE:
+              break;
+            case GDK_WIN32_KEYMAP_MATCH_EXACT:
+            case GDK_WIN32_KEYMAP_MATCH_PARTIAL:
+              for (i = 0; i < output_size; i++)
+                {
+                  output_char = gdk_keyval_to_unicode (output[i]);
+                  gtk_im_context_simple_commit_char (GTK_IM_CONTEXT (context_simple),
+                                                     output_char);
+                }
+              priv->compose_buffer[0] = 0;
+              return TRUE;
+            case GDK_WIN32_KEYMAP_MATCH_INCOMPLETE:
+              return TRUE;
             }
-          priv->compose_buffer[0] = 0;
-          return TRUE;
-        case GDK_WIN32_KEYMAP_MATCH_INCOMPLETE:
-          return TRUE;
         }
 #endif