forked from AuroraMiddleware/gtk
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. https://bugzilla.gnome.org/show_bug.cgi?id=749339
This commit is contained in:
parent
69c9cb85e2
commit
27763743b1
@ -64,13 +64,20 @@ gdk_wayland_drag_context_finalize (GObject *object)
|
|||||||
{
|
{
|
||||||
GdkWaylandDragContext *wayland_context = GDK_WAYLAND_DRAG_CONTEXT (object);
|
GdkWaylandDragContext *wayland_context = GDK_WAYLAND_DRAG_CONTEXT (object);
|
||||||
GdkDragContext *context = GDK_DRAG_CONTEXT (object);
|
GdkDragContext *context = GDK_DRAG_CONTEXT (object);
|
||||||
GdkDisplay *display = gdk_window_get_display (context->source_window);
|
|
||||||
|
|
||||||
contexts = g_list_remove (contexts, context);
|
contexts = g_list_remove (contexts, context);
|
||||||
|
|
||||||
if (context->is_source &&
|
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));
|
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)
|
if (wayland_context->data_source)
|
||||||
wl_data_source_destroy (wayland_context->data_source);
|
wl_data_source_destroy (wayland_context->data_source);
|
||||||
|
Loading…
Reference in New Issue
Block a user