summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2022-11-25 07:59:35 -0500
committerMatthias Clasen <mclasen@redhat.com>2022-11-25 07:59:35 -0500
commit196a398210438c37a03b58e8ad27946495e7e68a (patch)
tree7595d007a807c51415b9458a7fd4b3a445ecf96d
parent753c6f2435b61ef68c464dc3eb667c123e08fd48 (diff)
downloadgtk+-keyboard-direction-crash.tar.gz
text: Prevent unexpected notify::direction emissionskeyboard-direction-crash
Calling gdk_device_get_direction can trigger a notify::direction emissions, since the X11 backend determines the direction on demand. Prevent that by forcing the direction to be determined ahead of time. Fixes: #5311
-rw-r--r--gtk/gtktext.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gtk/gtktext.c b/gtk/gtktext.c
index 8631dbba71..72daa5d444 100644
--- a/gtk/gtktext.c
+++ b/gtk/gtktext.c
@@ -3234,8 +3234,12 @@ gtk_text_focus_changed (GtkEventControllerFocus *controller,
if (gtk_event_controller_focus_is_focus (controller))
{
if (keyboard)
- g_signal_connect (keyboard, "notify::direction",
- G_CALLBACK (direction_changed), self);
+ {
+ /* Work around unexpected notify::direction emissions */
+ gdk_device_get_direction (keyboard);
+ g_signal_connect (keyboard, "notify::direction",
+ G_CALLBACK (direction_changed), self);
+ }
gtk_text_im_set_focus_in (self);
gtk_text_reset_blink_time (self);