From dbbc9b5c5885b57bb1737f4a0a52e45aea377657 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 8 Aug 2020 14:25:46 -0400 Subject: [PATCH] placessidebar: Fix dnd cancellation When the drag is canceled by being dropped outside, we get a ::cancel emission, that we want to handle just like ::dnd-finished. Fixes: #3037 --- gtk/gtkplacessidebar.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gtk/gtkplacessidebar.c b/gtk/gtkplacessidebar.c index 106f227789..148a0aa711 100644 --- a/gtk/gtkplacessidebar.c +++ b/gtk/gtkplacessidebar.c @@ -1896,6 +1896,14 @@ dnd_finished_cb (GdkDrag *drag, stop_drop_feedback (sidebar); } +static void +dnd_cancel_cb (GdkDrag *drag, + GdkDragCancelReason reason, + GtkPlacesSidebar *sidebar) +{ + stop_drop_feedback (sidebar); +} + /* This functions is called every time the drag source leaves * the sidebar widget. * The problem is that, we start showing hints for drop when the source @@ -3494,6 +3502,7 @@ on_row_dragged (GtkGestureDrag *gesture, g_object_unref (content); g_signal_connect (drag, "dnd-finished", G_CALLBACK (dnd_finished_cb), sidebar); + g_signal_connect (drag, "cancel", G_CALLBACK (dnd_cancel_cb), sidebar); gtk_widget_get_allocation (sidebar->drag_row, &allocation); gtk_widget_hide (sidebar->drag_row);