mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-28 14:31:10 +00:00
Merge branch 'wip/exalm/gtktext-selection-fix' into 'master'
text: Use the widget y coordinate for gestures See merge request GNOME/gtk!3780
This commit is contained in:
commit
6f04ec9dae
@ -2662,24 +2662,19 @@ in_selection (GtkText *self,
|
||||
return retval;
|
||||
}
|
||||
|
||||
static void
|
||||
static int
|
||||
gesture_get_current_point_in_layout (GtkGestureSingle *gesture,
|
||||
GtkText *self,
|
||||
int *x,
|
||||
int *y)
|
||||
GtkText *self)
|
||||
{
|
||||
int tx, ty;
|
||||
int tx;
|
||||
GdkEventSequence *sequence;
|
||||
double px, py;
|
||||
double px;
|
||||
|
||||
sequence = gtk_gesture_single_get_current_sequence (gesture);
|
||||
gtk_gesture_get_point (GTK_GESTURE (gesture), sequence, &px, &py);
|
||||
gtk_text_get_layout_offsets (self, &tx, &ty);
|
||||
gtk_gesture_get_point (GTK_GESTURE (gesture), sequence, &px, NULL);
|
||||
gtk_text_get_layout_offsets (self, &tx, NULL);
|
||||
|
||||
if (x)
|
||||
*x = px - tx;
|
||||
if (y)
|
||||
*y = py - ty;
|
||||
return px - tx;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -2737,7 +2732,8 @@ gtk_text_click_gesture_pressed (GtkGestureClick *gesture,
|
||||
current = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
|
||||
event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), current);
|
||||
|
||||
gesture_get_current_point_in_layout (GTK_GESTURE_SINGLE (gesture), self, &x, &y);
|
||||
x = gesture_get_current_point_in_layout (GTK_GESTURE_SINGLE (gesture), self);
|
||||
y = widget_y;
|
||||
gtk_text_reset_blink_time (self);
|
||||
|
||||
if (!gtk_widget_has_focus (widget))
|
||||
@ -2989,10 +2985,14 @@ gtk_text_drag_gesture_update (GtkGestureDrag *gesture,
|
||||
GdkEventSequence *sequence;
|
||||
GdkEvent *event;
|
||||
int x, y;
|
||||
double start_y;
|
||||
|
||||
gtk_text_selection_bubble_popup_unset (self);
|
||||
|
||||
gesture_get_current_point_in_layout (GTK_GESTURE_SINGLE (gesture), self, &x, &y);
|
||||
x = gesture_get_current_point_in_layout (GTK_GESTURE_SINGLE (gesture), self);
|
||||
gtk_gesture_drag_get_start_point (gesture, NULL, &start_y);
|
||||
y = start_y + offset_y;
|
||||
|
||||
sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
|
||||
event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user