forked from AuroraMiddleware/gtk
entry: Fix a case of disagreeing coordinate systems
gesture_get_current_point() returned x/y in layout coordiantes, but callers assumed it in textarea coordinates.
This commit is contained in:
parent
2533289b62
commit
c4f7fbecfa
@ -4369,10 +4369,10 @@ gtk_entry_event (GtkWidget *widget,
|
||||
}
|
||||
|
||||
static void
|
||||
gesture_get_current_point (GtkGestureSingle *gesture,
|
||||
GtkEntry *entry,
|
||||
gint *x,
|
||||
gint *y)
|
||||
gesture_get_current_point_in_layout (GtkGestureSingle *gesture,
|
||||
GtkEntry *entry,
|
||||
gint *x,
|
||||
gint *y)
|
||||
{
|
||||
gint tx, ty;
|
||||
GdkEventSequence *sequence;
|
||||
@ -4410,7 +4410,7 @@ gtk_entry_multipress_gesture_pressed (GtkGestureMultiPress *gesture,
|
||||
|
||||
gtk_gesture_set_sequence_state (GTK_GESTURE (gesture), current,
|
||||
GTK_EVENT_SEQUENCE_CLAIMED);
|
||||
gesture_get_current_point (GTK_GESTURE_SINGLE (gesture), entry, &x, &y);
|
||||
gesture_get_current_point_in_layout (GTK_GESTURE_SINGLE (gesture), entry, &x, &y);
|
||||
gtk_entry_reset_blink_time (entry);
|
||||
|
||||
if (!gtk_widget_has_focus (widget))
|
||||
@ -4420,7 +4420,7 @@ gtk_entry_multipress_gesture_pressed (GtkGestureMultiPress *gesture,
|
||||
priv->in_click = FALSE;
|
||||
}
|
||||
|
||||
tmp_pos = gtk_entry_find_position (entry, x + priv->scroll_offset);
|
||||
tmp_pos = gtk_entry_find_position (entry, x);
|
||||
|
||||
if (gdk_event_triggers_context_menu ((GdkEvent *) event))
|
||||
{
|
||||
@ -4472,7 +4472,7 @@ gtk_entry_multipress_gesture_pressed (GtkGestureMultiPress *gesture,
|
||||
switch (n_press)
|
||||
{
|
||||
case 1:
|
||||
if (in_selection (entry, x + priv->scroll_offset))
|
||||
if (in_selection (entry, x))
|
||||
{
|
||||
if (is_touchscreen)
|
||||
{
|
||||
@ -4488,7 +4488,7 @@ gtk_entry_multipress_gesture_pressed (GtkGestureMultiPress *gesture,
|
||||
* clear the selection
|
||||
*/
|
||||
priv->in_drag = TRUE;
|
||||
priv->drag_start_x = x + priv->scroll_offset;
|
||||
priv->drag_start_x = x;
|
||||
priv->drag_start_y = y;
|
||||
}
|
||||
}
|
||||
@ -4622,7 +4622,7 @@ gtk_entry_drag_gesture_update (GtkGestureDrag *gesture,
|
||||
|
||||
gtk_entry_selection_bubble_popup_unset (entry);
|
||||
|
||||
gesture_get_current_point (GTK_GESTURE_SINGLE (gesture), entry, &x, &y);
|
||||
gesture_get_current_point_in_layout (GTK_GESTURE_SINGLE (gesture), entry, &x, &y);
|
||||
sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
|
||||
event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence);
|
||||
|
||||
@ -4644,7 +4644,7 @@ gtk_entry_drag_gesture_update (GtkGestureDrag *gesture,
|
||||
if (gtk_entry_get_display_mode (entry) == DISPLAY_NORMAL &&
|
||||
gtk_drag_check_threshold (widget,
|
||||
priv->drag_start_x, priv->drag_start_y,
|
||||
x + priv->scroll_offset, y))
|
||||
x, y))
|
||||
{
|
||||
gint *ranges;
|
||||
gint n_ranges;
|
||||
@ -4682,7 +4682,7 @@ gtk_entry_drag_gesture_update (GtkGestureDrag *gesture,
|
||||
else if (y >= gdk_window_get_height (priv->text_area))
|
||||
tmp_pos = length;
|
||||
else
|
||||
tmp_pos = gtk_entry_find_position (entry, x + priv->scroll_offset);
|
||||
tmp_pos = gtk_entry_find_position (entry, x);
|
||||
|
||||
source = gdk_event_get_source_device (event);
|
||||
input_source = gdk_device_get_source (source);
|
||||
@ -4737,7 +4737,7 @@ gtk_entry_drag_gesture_update (GtkGestureDrag *gesture,
|
||||
(priv->current_pos == priv->selection_bound) ?
|
||||
GTK_TEXT_HANDLE_MODE_CURSOR :
|
||||
GTK_TEXT_HANDLE_MODE_SELECTION);
|
||||
gtk_entry_show_magnifier (entry, x, y);
|
||||
gtk_entry_show_magnifier (entry, x - priv->scroll_offset, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user