Always emit reset for IM preedit with mouse click
authorTakao Fujiwara <tfujiwar@redhat.com>
Wed, 20 Feb 2019 09:58:51 +0000 (18:58 +0900)
committerTakao Fujiwara <tfujiwar@redhat.com>
Wed, 20 Feb 2019 09:58:51 +0000 (18:58 +0900)
Hangul inputs treat pre-edit text as output text and the pre-edit
text won't be moved with mouse click.
Now the reset signal is always emitted simply with mouse click and
each IM engine could handle the signal whether the preedit is committed,
cleared or kept.

Closes #1534

gtk/gtktext.c
gtk/gtktextview.c

index 0d54525daad43e285285d176ab743218355dd6be..36dedc0758fe31667189f8b6073a12ccaf2fe253 100644 (file)
@@ -2518,8 +2518,9 @@ gtk_text_multipress_gesture_pressed (GtkGestureMultiPress *gesture,
          gtk_widget_get_modifier_mask (widget,
                                        GDK_MODIFIER_INTENT_EXTEND_SELECTION));
 
-      if (extend_selection)
-        gtk_text_reset_im_context (self);
+      /* Always emit reset when preedit is shown */
+      priv->need_im_reset = TRUE;
+      gtk_text_reset_im_context (self);
 
       switch (n_press)
         {
index 083d181e02e2f9d6695bb44ee9501d96778d6dfe..8e50f05aaa2e8673f3546a85200af19056719406 100644 (file)
@@ -5103,7 +5103,11 @@ gtk_text_view_multipress_gesture_pressed (GtkGestureMultiPress *gesture,
                    gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN;
 
   if (n_press == 1)
-    gtk_text_view_reset_im_context (text_view);
+    {
+      /* Always emit reset when preedit is shown */
+      priv->need_im_reset = TRUE;
+      gtk_text_view_reset_im_context (text_view);
+    }
 
   if (n_press == 1 &&
       gdk_event_triggers_context_menu (event))