diff options
Diffstat (limited to 'src/nautilus-list-view.c')
-rw-r--r-- | src/nautilus-list-view.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c index 787090851..825a3154d 100644 --- a/src/nautilus-list-view.c +++ b/src/nautilus-list-view.c @@ -872,23 +872,31 @@ on_tree_view_multi_press_gesture_released (GtkGestureMultiPress *gesture, { NautilusListView *view; guint button; - GdkEventSequence *sequence; - const GdkEvent *event; view = NAUTILUS_LIST_VIEW (callback_data); button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture)); - if (button != view->details->drag_button) { return; } - sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture)); - event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence); - view->details->drag_button = 0; if (!view->details->drag_started && !view->details->ignore_button_release) { + GdkEventSequence *sequence; + const GdkEvent *event; + + sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture)); + event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence); + /* Typically will only happen with GTK+ <= 3.22.30 and <= 3.93.0, + * where ::released is emitted after ::cancel, but can’t hurt to guard + * against it anyway. + */ + if (event == NULL) + { + return; + } + nautilus_list_view_did_not_drag (view, event); } } |