entry: Check first whether the sequence is handled, fetch later the event

And always unset/hide the selection popover if unhandled, that means the
sequence went grabbed/claimed somewhere else and cancelled here.
This commit is contained in:
Carlos Garnacho 2014-05-21 14:51:46 +02:00
parent 485da90a2e
commit f54277204f

View File

@ -4706,6 +4706,13 @@ gtk_entry_drag_gesture_end (GtkGestureDrag *gesture,
if (priv->magnifier_popover)
gtk_widget_hide (priv->magnifier_popover);
/* Check whether the drag was cancelled rather than finished */
if (!gtk_gesture_handles_sequence (GTK_GESTURE (gesture), sequence))
{
gtk_entry_selection_bubble_popup_unset (entry);
return;
}
event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence);
source = gdk_event_get_source_device (event);
is_touchscreen = (test_touchscreen ||
@ -4717,10 +4724,6 @@ gtk_entry_drag_gesture_end (GtkGestureDrag *gesture,
else if (is_touchscreen)
gtk_entry_selection_bubble_popup_set (entry);
/* Check whether the drag was cancelled rather than finished */
if (!gtk_gesture_handles_sequence (GTK_GESTURE (gesture), sequence))
return;
if (in_drag)
{
gint tmp_pos = gtk_entry_find_position (entry, priv->drag_start_x);