[gtk/wip/carlosg/for-master: 5/6] gtk/textview: Defer touchscreen focus placing to drag end




commit f9813019a7037f6f5ae3eae0f72d7267344c6c13
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Nov 5 21:07:54 2020 +0100

    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;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]