Revert "wayland: Send clipboard offers to all data devices from the same client"

This reverts commit 36f5a0a491.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1330
This commit is contained in:
Robert Mader 2020-06-24 21:29:14 +02:00
parent 849d8dfae9
commit 78248d8dd3
2 changed files with 6 additions and 41 deletions

View File

@ -108,30 +108,6 @@ static struct wl_resource * create_and_send_primary_offer (MetaWaylandDataDevi
struct wl_resource *target); struct wl_resource *target);
static struct wl_resource * meta_wayland_data_source_get_resource (MetaWaylandDataSource *source); static struct wl_resource * meta_wayland_data_source_get_resource (MetaWaylandDataSource *source);
static void
move_resources (struct wl_list *destination,
struct wl_list *source)
{
wl_list_insert_list (destination, source);
wl_list_init (source);
}
static void
move_resources_for_client (struct wl_list *destination,
struct wl_list *source,
struct wl_client *client)
{
struct wl_resource *resource, *tmp;
wl_resource_for_each_safe (resource, tmp, source)
{
if (wl_resource_get_client (resource) == client)
{
wl_list_remove (wl_resource_get_link (resource));
wl_list_insert (destination, wl_resource_get_link (resource));
}
}
}
static void static void
unbind_resource (struct wl_resource *resource) unbind_resource (struct wl_resource *resource)
{ {
@ -925,12 +901,6 @@ meta_wayland_drag_grab_set_focus (MetaWaylandDragGrab *drag_grab,
client = wl_resource_get_client (surface->resource); client = wl_resource_get_client (surface->resource);
data_device_resource = wl_resource_find_for_client (&seat->data_device.resource_list, client); data_device_resource = wl_resource_find_for_client (&seat->data_device.resource_list, client);
if (!data_device_resource)
{
data_device_resource =
wl_resource_find_for_client (&seat->data_device.focus_resource_list,
client);
}
if (source && data_device_resource) if (source && data_device_resource)
offer = create_and_send_dnd_offer (source, data_device_resource); offer = create_and_send_dnd_offer (source, data_device_resource);
@ -1890,7 +1860,10 @@ owner_changed_cb (MetaSelection *selection,
} }
else if (selection_type == META_SELECTION_CLIPBOARD) else if (selection_type == META_SELECTION_CLIPBOARD)
{ {
wl_resource_for_each (data_device_resource, &data_device->focus_resource_list) data_device_resource =
wl_resource_find_for_client (&data_device->resource_list, focus_client);
if (data_device_resource)
{ {
struct wl_resource *offer = NULL; struct wl_resource *offer = NULL;
@ -2025,7 +1998,6 @@ void
meta_wayland_data_device_init (MetaWaylandDataDevice *data_device) meta_wayland_data_device_init (MetaWaylandDataDevice *data_device)
{ {
wl_list_init (&data_device->resource_list); wl_list_init (&data_device->resource_list);
wl_list_init (&data_device->focus_resource_list);
wl_list_init (&data_device->primary_resource_list); wl_list_init (&data_device->primary_resource_list);
} }
@ -2108,20 +2080,14 @@ meta_wayland_data_device_set_keyboard_focus (MetaWaylandDataDevice *data_device)
return; return;
data_device->focus_client = focus_client; data_device->focus_client = focus_client;
move_resources (&data_device->resource_list,
&data_device->focus_resource_list);
if (!focus_client) if (!focus_client)
return; return;
move_resources_for_client (&data_device->focus_resource_list, data_device_resource = wl_resource_find_for_client (&data_device->resource_list, focus_client);
&data_device->resource_list, if (data_device_resource)
focus_client);
wl_resource_for_each (data_device_resource, &data_device->focus_resource_list)
{ {
struct wl_resource *offer; struct wl_resource *offer;
offer = create_and_send_clipboard_offer (data_device, data_device_resource); offer = create_and_send_clipboard_offer (data_device, data_device_resource);
wl_data_device_send_selection (data_device_resource, offer); wl_data_device_send_selection (data_device_resource, offer);
} }

View File

@ -63,7 +63,6 @@ struct _MetaWaylandDataDevice
MetaWaylandDataSource *primary_data_source; MetaWaylandDataSource *primary_data_source;
struct wl_listener selection_data_source_listener; struct wl_listener selection_data_source_listener;
struct wl_list resource_list; struct wl_list resource_list;
struct wl_list focus_resource_list;
struct wl_list primary_resource_list; struct wl_list primary_resource_list;
MetaWaylandDragGrab *current_grab; MetaWaylandDragGrab *current_grab;
struct wl_client *focus_client; struct wl_client *focus_client;