[gtk/matthiasc/for-master] placessidebar: Fix dnd cancellation



commit dbbc9b5c5885b57bb1737f4a0a52e45aea377657
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Aug 8 14:25:46 2020 -0400

    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);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]