summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErnestas Kulik <ernestask@gnome.org>2018-05-28 12:48:37 +0300
committerErnestas Kulik <ernestask@gnome.org>2018-05-31 13:35:16 +0300
commit20afa56cb53e11dcd0a077afd8460d4faa93659d (patch)
treed4c5aa242c55e3e45fab982d079b03e0ac6c4158
parent487213ad9b7b1f216ce9f9e9d6aecf5b51a6ea19 (diff)
downloadnautilus-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.
-rw-r--r--src/nautilus-list-view.c20
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);
}
}