From 271d7632cbabe67a11449f50b2bf987c3bddb167 Mon Sep 17 00:00:00 2001 From: Sergey Bugaev Date: Tue, 5 Sep 2023 08:39:35 +0300 Subject: [PATCH] text: Respect focus-on-click property It does make sense to have GtkText not focus on click in some cases, such as when its editable property is set to false. Signed-off-by: Sergey Bugaev --- gtk/gtktext.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/gtk/gtktext.c b/gtk/gtktext.c index 147c8fa047..2d303f3765 100644 --- a/gtk/gtktext.c +++ b/gtk/gtktext.c @@ -2745,6 +2745,16 @@ gtk_text_click_gesture_pressed (GtkGestureClick *gesture, guint button; int tmp_pos; + if (!gtk_widget_has_focus (widget)) + { + if (!gtk_widget_get_focus_on_click (widget)) + return; + priv->in_click = TRUE; + gtk_widget_grab_focus (widget); + gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED); + priv->in_click = FALSE; + } + button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture)); current = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture)); event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), current); @@ -2753,14 +2763,6 @@ gtk_text_click_gesture_pressed (GtkGestureClick *gesture, y = widget_y; gtk_text_reset_blink_time (self); - if (!gtk_widget_has_focus (widget)) - { - priv->in_click = TRUE; - gtk_widget_grab_focus (widget); - gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED); - priv->in_click = FALSE; - } - tmp_pos = gtk_text_find_position (self, x); if (gdk_event_triggers_context_menu (event))