From f9813019a7037f6f5ae3eae0f72d7267344c6c13 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 5 Nov 2020 21:07:54 +0100 Subject: [PATCH] gtk/textview: Defer touchscreen focus placing to drag end With the scrolledwindow drag gesture not claiming the sequence immediately, we end up placing the cursor (and undoing the previous selection) each time we scroll. There is already handling too short drags in ::drag-end, so let this code handle touchscreens as well. --- gtk/gtktextview.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index bf3a2b30e3..152238e2e2 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -5473,10 +5473,7 @@ gtk_text_view_click_gesture_pressed (GtkGestureClick *gesture, gtk_text_view_selection_bubble_popup_unset (text_view); if (is_touchscreen) - { - gtk_text_buffer_place_cursor (get_buffer (text_view), &iter); - priv->handle_place_time = g_get_monotonic_time (); - } + priv->handle_place_time = g_get_monotonic_time (); else gtk_text_view_start_selection_drag (text_view, &iter, SELECT_CHARACTERS, extends); @@ -7371,7 +7368,7 @@ gtk_text_view_drag_gesture_end (GtkGestureDrag *gesture, is_touchscreen = gtk_simulate_touchscreen () || gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN; - if (!is_touchscreen && clicked_in_selection && + if ((is_touchscreen || clicked_in_selection) && !gtk_drag_check_threshold (GTK_WIDGET (text_view), start_x, start_y, x, y)) { GtkTextIter iter;