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~1^2~415^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=5b9a7863cf63644ca0b5651cc79dbf9d90543caf;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 de42ea674a..3c25b5fb5a 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: