From: Carlos Garnacho Date: Wed, 12 Apr 2023 09:24:46 +0000 (+0200) Subject: textview: Reset press counter if double/triple clicking on a different line X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~4^2~10^2~25 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=2ac3d0a59dce1656f6a46781797e270e54f88531;p=gtk4.git textview: Reset press counter if double/triple clicking on a different line If we click close enough between lines, and with the maximum distances applied by GtkGestureClick we could jump between lines when handling double/triple click for word/line selection. Ensure that the whole operation stays in the same line and reset the gesture/counter if we do move between lines, so we start from scratch in the new line. --- diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index c384002f76..04924ca829 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -5640,6 +5640,26 @@ gtk_text_view_click_gesture_pressed (GtkGestureClick *gesture, if (state & GDK_SHIFT_MASK) extends = TRUE; + if (n_press > 1) + { + GtkTextBuffer *buffer; + GtkTextIter cur, ins; + + buffer = get_buffer (text_view); + get_iter_from_gesture (text_view, GTK_GESTURE (gesture), + &cur, NULL, NULL); + gtk_text_buffer_get_iter_at_mark (buffer, &ins, + gtk_text_buffer_get_insert (buffer)); + + /* Reset count if double/triple clicking on a different line */ + if (gtk_text_iter_get_line (&cur) != + gtk_text_iter_get_line (&ins)) + { + gtk_event_controller_reset (GTK_EVENT_CONTROLLER (gesture)); + n_press = 1; + } + } + switch (n_press) { case 1: