summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk/gtkdragsource.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gtk/gtkdragsource.c b/gtk/gtkdragsource.c
index cd6c33a7fa..a75f60f5c2 100644
--- a/gtk/gtkdragsource.c
+++ b/gtk/gtkdragsource.c
@@ -470,6 +470,7 @@ drag_end (GtkDragSource *source,
gdk_drag_drop_done (source->drag, success);
g_clear_object (&source->drag);
+ g_object_unref (source);
}
static void
@@ -593,6 +594,9 @@ gtk_drag_source_drag_begin (GtkDragSource *source)
gtk_drag_source_ensure_icon (source, source->drag);
+ /* Keep the source alive until the drag is done */
+ g_object_ref (source);
+
g_signal_connect (source->drag, "dnd-finished",
G_CALLBACK (gtk_drag_source_dnd_finished_cb), source);
g_signal_connect (source->drag, "cancel",