Fix a corner-case for emoji input
authorMatthias Clasen <mclasen@redhat.com>
Mon, 11 Sep 2017 15:17:41 +0000 (11:17 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 11 Sep 2017 15:19:47 +0000 (11:19 -0400)
As reported in https://github.com/ibus/ibus/issues/1944,
typing u201e while holding Ctrl+Shift used to give a „
when letting go of Ctrl+Shift. This broke when we introduced
Ctrl+Shift+e to start Emoji sequences. Fix this by only
looking for Ctrl+Shift+e if we are not already in a hex
sequence.

gtk/gtkimcontextsimple.c

index 01de597d81711cac6a96d171347697bdb704f9e7..48d4568e1f3f567ebcddd259f1ce558acf94dcfb 100644 (file)
@@ -1220,7 +1220,7 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
   else
     have_hex_mods = (event->state & (hex_mod_mask)) == hex_mod_mask;
   is_hex_start = event->keyval == GDK_KEY_U;
-  is_emoji_start = event->keyval == GDK_KEY_E;
+  is_emoji_start = (event->keyval == GDK_KEY_E) && !priv->in_hex_sequence;
   is_end = (event->keyval == GDK_KEY_space ||
             event->keyval == GDK_KEY_KP_Space ||
             event->keyval == GDK_KEY_Return ||