[gtk/gtk-3-22] imcontextsimple: ensure W32 code only runs on W32 displays



commit 9ca3bacddf11381ca49ea9cb3499018feba4dd88
Author: Руслан Ижбулатов <lrn1986 gmail com>
Date:   Thu Apr 26 17:42:49 2018 +0000

    imcontextsimple: ensure W32 code only runs on W32 displays
    
    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 | 41 ++++++++++++++++++++++-------------------
 1 file changed, 22 insertions(+), 19 deletions(-)
---
diff --git a/gtk/gtkimcontextsimple.c b/gtk/gtkimcontextsimple.c
index 48d4568e1f..ae62ac81b8 100644
--- a/gtk/gtkimcontextsimple.c
+++ b/gtk/gtkimcontextsimple.c
@@ -1427,28 +1427,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 (gdk_keymap_get_default ()),
-                                              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 (gdk_keymap_get_default ()),
+                                                  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
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]