diff options
author | Ernestas Kulik <ernestask@gnome.org> | 2018-05-28 12:48:37 +0300 |
---|---|---|
committer | Ernestas Kulik <ernestask@gnome.org> | 2018-05-31 13:35:16 +0300 |
commit | 20afa56cb53e11dcd0a077afd8460d4faa93659d (patch) | |
tree | d4c5aa242c55e3e45fab982d079b03e0ac6c4158 /src/nautilus-list-view.c | |
parent | 487213ad9b7b1f216ce9f9e9d6aecf5b51a6ea19 (diff) | |
download | nautilus-20afa56cb53e11dcd0a077afd8460d4faa93659d.tar.gz |
list-view: Guard against null event in ::released
Until 3.22.31 or 3.24.0 is released with
https://gitlab.gnome.org/GNOME/gtk/commit/4d2b39d98c3f392782e0ae205dfb50cbc1052b3d,
this will act as a workaround for ::released being emitted after ::cancel due
to a grab.
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); } } |