SHA256
1
0
forked from pool/mutter
mutter/clutter-only_reset_preedit_text_if_set.patch
Bjørn Lie 3f2bea55a5 Accepting request 927837 from home:sp1rit:testing
Added clutter-only_reset_preedit_text_if_set.patch:
this fixes "scrollback" issue I've talked about in https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/thread/WYSUDJFTZIEEJS3QBBBUNLD3XBXULABU/
however it seems like upstream will only include it as of GNOME 42, even tho this seems like a pretty detrimental bug that should be addressed sooner.

Used proper guide line for patch @dimstar requsted

OBS-URL: https://build.opensuse.org/request/show/927837
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/mutter?expand=0&rev=391
2021-11-02 11:43:59 +00:00

46 lines
1.6 KiB
Diff

From 3b6f9111c7da3fee82d3ffd19c444155f84d86ea Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Tue, 19 Oct 2021 16:53:13 +0200
Subject: [PATCH] clutter: Only reset preedit text if set
On ClutterInputFocus::reset, avoid to unset the preedit text if
none was set earlier. This seems to trick GTK clients into focusing
the cursor position again, even when we are moving away from it.
Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4647
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2059>
---
clutter/clutter/clutter-input-focus.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/clutter/clutter/clutter-input-focus.c b/clutter/clutter/clutter-input-focus.c
index c22e3a32c0..117bab72ce 100644
--- a/clutter/clutter/clutter-input-focus.c
+++ b/clutter/clutter/clutter-input-focus.c
@@ -103,14 +103,16 @@ clutter_input_focus_reset (ClutterInputFocus *focus)
priv = clutter_input_focus_get_instance_private (focus);
- if (priv->preedit &&
- priv->mode == CLUTTER_PREEDIT_RESET_COMMIT)
- clutter_input_focus_commit (focus, priv->preedit);
+ if (priv->preedit)
+ {
+ if (priv->mode == CLUTTER_PREEDIT_RESET_COMMIT)
+ clutter_input_focus_commit (focus, priv->preedit);
- clutter_input_focus_set_preedit_text (focus, NULL, 0);
- g_clear_pointer (&priv->preedit, g_free);
- priv->mode = CLUTTER_PREEDIT_RESET_CLEAR;
+ clutter_input_focus_set_preedit_text (focus, NULL, 0);
+ g_clear_pointer (&priv->preedit, g_free);
+ }
+ priv->mode = CLUTTER_PREEDIT_RESET_CLEAR;
clutter_input_method_reset (priv->im);
}
--
GitLab