Commit 27763743 authored by Jonas Ådahl's avatar Jonas Ådahl

wayland: Don't assume drag context has a source window when finalizing

Only a drag context which was created with 'drag_begin' will be
guaranteed to have a source window at all times. Thus, in finalize we
cannot assume we can retrieve a GdkDisplay from the source_window
pointer since it may be NULL. Though, the display is only needed for
contexts created via 'drag_begin' thus we can retrieve it after
checking that is the case.
parent 69c9cb85
......@@ -64,13 +64,20 @@ gdk_wayland_drag_context_finalize (GObject *object)
GdkWaylandDragContext *wayland_context = GDK_WAYLAND_DRAG_CONTEXT (object);
GdkDragContext *context = GDK_DRAG_CONTEXT (object);
GdkDisplay *display = gdk_window_get_display (context->source_window);
contexts = g_list_remove (contexts, context);
if (context->is_source &&
gdk_selection_owner_get_for_display (display, gdk_drag_get_selection (context)) == context->source_window)
gdk_wayland_selection_unset_data_source (display, gdk_drag_get_selection (context));
if (context->is_source)
GdkDisplay *display = gdk_window_get_display (context->source_window);
GdkAtom selection;
GdkWindow *selection_owner;
selection = gdk_drag_get_selection (context);
selection_owner = gdk_selection_owner_get_for_display (display, selection);
if (selection_owner == context->source_window)
gdk_wayland_selection_unset_data_source (display, selection);
if (wayland_context->data_source)
wl_data_source_destroy (wayland_context->data_source);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment