imcontext: Handle Escape in Compose sequence
authorMatthias Clasen <mclasen@redhat.com>
Thu, 29 Jul 2021 12:39:17 +0000 (08:39 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 29 Jul 2021 12:39:17 +0000 (08:39 -0400)
Treat Escape the same in hex sequences and in
Compose sequence: reset the state.

gtk/gtkimcontextsimple.c

index 71f9094aee2f50406a0b4db83dd243143019ce18..8289aad7bca24a2cdea9f055aa147bc63afe8467 100644 (file)
@@ -1001,16 +1001,22 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
   
       return TRUE;
     }
-  
+
+  if (is_escape)
+    {
+      if (priv->in_hex_sequence || priv->in_compose_sequence)
+        {
+         gtk_im_context_simple_reset (context);
+         return TRUE;
+        }
+
+      return FALSE;
+    }
+
   if (priv->in_hex_sequence)
     {
       if (hex_keyval && n_compose < 6)
        priv->compose_buffer[n_compose++] = hex_keyval;
-      else if (is_escape)
-       {
-         gtk_im_context_simple_reset (context);
-         return TRUE;
-       }
       else if (!is_hex_end)
        {
          /* non-hex character in hex sequence, or sequence too long */