summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2014-05-21 14:57:07 +0200
committerCarlos Garnacho <carlosg@gnome.org>2014-05-23 19:54:33 +0200
commitc9f54aef699978c638c07b0f597c95473a37bc5e (patch)
tree54bd233cb09ff3bbbd1fbc29b16be551b8e47151
parentf54277204fff17e586ab9a0ae4489632a5f0b0b7 (diff)
downloadgtk+-c9f54aef699978c638c07b0f597c95473a37bc5e.tar.gz
textview: 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.
-rw-r--r--gtk/gtktextview.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index fdeb93238d..d7939521f5 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -7046,6 +7046,13 @@ gtk_text_view_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_text_view_selection_bubble_popup_unset (text_view);
+ return;
+ }
+
event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence);
device = gdk_event_get_source_device (event);
is_touchscreen = test_touchscreen ||
@@ -7057,10 +7064,6 @@ gtk_text_view_drag_gesture_end (GtkGestureDrag *gesture,
else if (is_touchscreen)
gtk_text_view_selection_bubble_popup_set (text_view);
- /* Check whether the drag was cancelled rather than finished */
- if (!gtk_gesture_handles_sequence (GTK_GESTURE (gesture), sequence))
- return;
-
if (clicked_in_selection &&
!gtk_drag_check_threshold (GTK_WIDGET (text_view), start_x, start_y, x, y))
{