forked from AuroraMiddleware/gtk
wayland: Store requested target on GdkWaylandSelection
It doesn't make a lot of sense to have this stored as data offer data, rather together with the source_targets array, which is what we're poking here in the end. https://bugzilla.gnome.org/show_bug.cgi?id=758713
This commit is contained in:
parent
a28103cf51
commit
0ad927adca
@ -69,7 +69,6 @@ struct _DataOfferData
|
|||||||
{
|
{
|
||||||
struct wl_data_offer *offer;
|
struct wl_data_offer *offer;
|
||||||
GList *targets; /* List of GdkAtom */
|
GList *targets; /* List of GdkAtom */
|
||||||
GdkAtom requested_target;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _AsyncWriteData
|
struct _AsyncWriteData
|
||||||
@ -97,6 +96,7 @@ struct _GdkWaylandSelection
|
|||||||
/* Source-side data */
|
/* Source-side data */
|
||||||
StoredSelection stored_selection;
|
StoredSelection stored_selection;
|
||||||
GArray *source_targets;
|
GArray *source_targets;
|
||||||
|
GdkAtom requested_target;
|
||||||
|
|
||||||
struct wl_data_source *clipboard_source;
|
struct wl_data_source *clipboard_source;
|
||||||
GdkWindow *clipboard_owner;
|
GdkWindow *clipboard_owner;
|
||||||
@ -657,7 +657,6 @@ gdk_wayland_selection_request_target (GdkWaylandSelection *wayland_selection,
|
|||||||
GdkAtom target,
|
GdkAtom target,
|
||||||
gint fd)
|
gint fd)
|
||||||
{
|
{
|
||||||
DataOfferData *offer;
|
|
||||||
GdkAtom selection;
|
GdkAtom selection;
|
||||||
|
|
||||||
if (wayland_selection->clipboard_owner == window)
|
if (wayland_selection->clipboard_owner == window)
|
||||||
@ -667,10 +666,8 @@ gdk_wayland_selection_request_target (GdkWaylandSelection *wayland_selection,
|
|||||||
else
|
else
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
offer = selection_lookup_offer_by_atom (wayland_selection, selection);
|
|
||||||
|
|
||||||
if (wayland_selection->stored_selection.fd == fd &&
|
if (wayland_selection->stored_selection.fd == fd &&
|
||||||
offer->requested_target == target)
|
wayland_selection->requested_target == target)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* If we didn't issue gdk_wayland_selection_check_write() yet
|
/* If we didn't issue gdk_wayland_selection_check_write() yet
|
||||||
@ -681,7 +678,7 @@ gdk_wayland_selection_request_target (GdkWaylandSelection *wayland_selection,
|
|||||||
close (wayland_selection->stored_selection.fd);
|
close (wayland_selection->stored_selection.fd);
|
||||||
|
|
||||||
wayland_selection->stored_selection.fd = fd;
|
wayland_selection->stored_selection.fd = fd;
|
||||||
offer->requested_target = target;
|
wayland_selection->requested_target = target;
|
||||||
|
|
||||||
if (window &&
|
if (window &&
|
||||||
gdk_wayland_selection_source_handles_target (wayland_selection, target))
|
gdk_wayland_selection_source_handles_target (wayland_selection, target))
|
||||||
@ -1188,6 +1185,7 @@ gdk_wayland_selection_clear_targets (GdkDisplay *display,
|
|||||||
{
|
{
|
||||||
GdkWaylandSelection *wayland_selection = gdk_wayland_display_get_selection (display);
|
GdkWaylandSelection *wayland_selection = gdk_wayland_display_get_selection (display);
|
||||||
|
|
||||||
|
wayland_selection->requested_target = GDK_NONE;
|
||||||
g_array_set_size (wayland_selection->source_targets, 0);
|
g_array_set_size (wayland_selection->source_targets, 0);
|
||||||
gdk_wayland_selection_unset_data_source (display, selection);
|
gdk_wayland_selection_unset_data_source (display, selection);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user