From 4ef45d4ea0c2302e5c6d6952ea7fccc33846e074 Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Wed, 11 Mar 2020 08:54:31 -0700 Subject: [PATCH] Backport fix for input method preedit issue (MR #1084) --- 1084.patch | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ gnome-shell.spec | 9 +++++++- 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 1084.patch diff --git a/1084.patch b/1084.patch new file mode 100644 index 0000000..65f3fc1 --- /dev/null +++ b/1084.patch @@ -0,0 +1,60 @@ +From b18469427e5c19402111de5fe9888bceec0eaacd Mon Sep 17 00:00:00 2001 +From: Carlos Garnacho +Date: Wed, 11 Mar 2020 12:32:07 +0100 +Subject: [PATCH] St: Ensure to update entry hint visibility with IM preedit + +Commit 88ac339774 changed StEntry behavior so the text hint would +stay visible while focused, as long as the text buffer is empty. +However, IMs that use preedit still should count as "started typing", +while the text buffer is still officially empty. + +To fix this, check on st_entry_update_hint_visibility() that there's +indeed no preedit buffer before showing the hint. We can't directly +listen to internal preedit buffer changes in ClutterText, so handle +preedit buffer updates through the ::cursor-changed signal that will +be indirectly emitted. + +https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1084 +--- + src/st/st-entry.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/src/st/st-entry.c b/src/st/st-entry.c +index 24fe7434c7..28dddc0537 100644 +--- a/src/st/st-entry.c ++++ b/src/st/st-entry.c +@@ -232,6 +232,7 @@ st_entry_update_hint_visibility (StEntry *self) + StEntryPrivate *priv = ST_ENTRY_PRIV (self); + gboolean hint_visible = + priv->hint_actor != NULL && ++ !clutter_text_has_preedit (CLUTTER_TEXT (priv->entry)) && + strcmp (clutter_text_get_text (CLUTTER_TEXT (priv->entry)), "") == 0; + + if (priv->hint_actor) +@@ -530,6 +531,13 @@ clutter_text_focus_out_cb (ClutterText *text, + clutter_text_set_cursor_visible (text, FALSE); + } + ++static void ++clutter_text_cursor_changed (ClutterText *text, ++ StEntry *entry) ++{ ++ st_entry_update_hint_visibility (entry); ++} ++ + static void + clutter_text_changed_cb (GObject *object, + GParamSpec *pspec, +@@ -980,6 +988,9 @@ st_entry_init (StEntry *entry) + g_signal_connect (priv->entry, "button-press-event", + G_CALLBACK (clutter_text_button_press_event), entry); + ++ g_signal_connect (priv->entry, "cursor-changed", ++ G_CALLBACK (clutter_text_cursor_changed), entry); ++ + g_signal_connect (priv->entry, "notify::text", + G_CALLBACK (clutter_text_changed_cb), entry); + +-- +2.24.1 + diff --git a/gnome-shell.spec b/gnome-shell.spec index ac641d0..7939e17 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -1,6 +1,6 @@ Name: gnome-shell Version: 3.36.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Window management and application launching for GNOME License: GPLv2+ @@ -22,6 +22,10 @@ Patch3: 0002-endSessionDialog-Support-rebooting-into-the-bootload.patch # https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1080 Patch4: 1080.patch +# Fix input method preedit not counting as 'started typing' +# https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1084 +Patch5: 1084.patch + %define libcroco_version 0.6.8 %define eds_version 3.33.1 %define gnome_desktop_version 3.35.91 @@ -232,6 +236,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de %{_datadir}/icons/hicolor/symbolic/apps/org.gnome.Extensions-symbolic.svg %changelog +* Wed Mar 11 2020 Adam Williamson - 3.36.0-3 +- Backport fix for input method preedit issue (MR #1084) + * Tue Mar 10 2020 Adam Williamson - 3.36.0-2 - Backport fix for ibus failing to start automatically (MR #1080)