diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-03-04 14:49:14 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-03-04 15:18:30 -0500 |
commit | 447203ce525ff95e916c6106818df2836c7d9b1f (patch) | |
tree | 135e8d2477dc27e2d6b1f466946488d1c25c6f0c | |
parent | feccdad9d2afcda75d87153c48d3bc0324fa4bd8 (diff) | |
download | gtk+-447203ce525ff95e916c6106818df2836c7d9b1f.tar.gz |
text: Delete selection when preedit starts
This prevents confusing misrendering when the preedit text
pushes the selection text out of the rendered selection.
Fixes: #1123
-rw-r--r-- | gtk/gtktext.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gtk/gtktext.c b/gtk/gtktext.c index f2f1f854b0..7791029e52 100644 --- a/gtk/gtktext.c +++ b/gtk/gtktext.c @@ -418,6 +418,8 @@ static void direction_changed (GdkDevice *keyboard, static void gtk_text_commit_cb (GtkIMContext *context, const char *str, GtkText *self); +static void gtk_text_preedit_start_cb (GtkIMContext *context, + GtkText *self); static void gtk_text_preedit_changed_cb (GtkIMContext *context, GtkText *self); static gboolean gtk_text_retrieve_surrounding_cb (GtkIMContext *context, @@ -1843,6 +1845,8 @@ gtk_text_init (GtkText *self) */ priv->im_context = gtk_im_multicontext_new (); + g_signal_connect (priv->im_context, "preedit-start", + G_CALLBACK (gtk_text_preedit_start_cb), self); g_signal_connect (priv->im_context, "commit", G_CALLBACK (gtk_text_commit_cb), self); g_signal_connect (priv->im_context, "preedit-changed", @@ -4151,6 +4155,13 @@ direction_changed (GdkDevice *device, */ static void +gtk_text_preedit_start_cb (GtkIMContext *context, + GtkText *self) +{ + gtk_text_delete_selection (self); +} + +static void gtk_text_commit_cb (GtkIMContext *context, const char *str, GtkText *self) |