mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-02 17:00:19 +00:00
dragsource: Keep the source alive long enough
When a drop causes the event controller to be finalized (directly or indirectly), we end up segfaulting while trying to wrap up the drag operation. So, keep a reference on the GtkDragSource from when the drag begins to when it is done. This fixes a crash in gnome-todo when dragging tasks.
This commit is contained in:
parent
d9784df92e
commit
2f921ab667
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user