wayland: Follow seat's input focus client for clipboard selections

The concept of "input focus" will exist	regardless of a	MetaWaylandKeyboard
being available	or not,	use the	seat's focus for that.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3707>
This commit is contained in:
Carlos Garnacho 2024-04-15 22:39:57 +02:00 committed by Marge Bot
parent 743fb6df30
commit 5ca10c31d1
3 changed files with 6 additions and 6 deletions

View File

@ -1062,7 +1062,7 @@ data_device_set_selection (struct wl_client *client,
} }
if (wl_resource_get_client (resource) != if (wl_resource_get_client (resource) !=
meta_wayland_keyboard_get_focus_client (seat->keyboard)) meta_wayland_seat_get_input_focus_client (seat))
{ {
if (source) if (source)
meta_wayland_data_source_cancel (source); meta_wayland_data_source_cancel (source);
@ -1106,7 +1106,7 @@ owner_changed_cb (MetaSelection *selection,
struct wl_resource *data_device_resource; struct wl_resource *data_device_resource;
struct wl_client *focus_client; struct wl_client *focus_client;
focus_client = meta_wayland_keyboard_get_focus_client (seat->keyboard); focus_client = meta_wayland_seat_get_input_focus_client (seat);
if (!focus_client) if (!focus_client)
return; return;
@ -1249,13 +1249,13 @@ create_and_send_clipboard_offer (MetaWaylandDataDevice *data_device,
} }
void void
meta_wayland_data_device_set_keyboard_focus (MetaWaylandDataDevice *data_device) meta_wayland_data_device_sync_focus (MetaWaylandDataDevice *data_device)
{ {
MetaWaylandSeat *seat = wl_container_of (data_device, seat, data_device); MetaWaylandSeat *seat = wl_container_of (data_device, seat, data_device);
struct wl_client *focus_client; struct wl_client *focus_client;
struct wl_resource *data_device_resource; struct wl_resource *data_device_resource;
focus_client = meta_wayland_keyboard_get_focus_client (seat->keyboard); focus_client = meta_wayland_seat_get_input_focus_client (seat);
if (focus_client == data_device->focus_client) if (focus_client == data_device->focus_client)
return; return;

View File

@ -59,7 +59,7 @@ void meta_wayland_data_device_init (MetaWaylandDataDevice *data_device,
MetaWaylandSeat * meta_wayland_data_device_get_seat (MetaWaylandDataDevice *data_device); MetaWaylandSeat * meta_wayland_data_device_get_seat (MetaWaylandDataDevice *data_device);
void meta_wayland_data_device_set_keyboard_focus (MetaWaylandDataDevice *data_device); void meta_wayland_data_device_sync_focus (MetaWaylandDataDevice *data_device);
MetaWaylandDragGrab * MetaWaylandDragGrab *
meta_wayland_data_device_get_current_grab (MetaWaylandDataDevice *data_device); meta_wayland_data_device_get_current_grab (MetaWaylandDataDevice *data_device);

View File

@ -224,7 +224,7 @@ default_focus (MetaWaylandEventHandler *handler,
if (meta_wayland_seat_has_keyboard (seat)) if (meta_wayland_seat_has_keyboard (seat))
meta_wayland_keyboard_set_focus (seat->keyboard, surface); meta_wayland_keyboard_set_focus (seat->keyboard, surface);
meta_wayland_data_device_set_keyboard_focus (&seat->data_device); meta_wayland_data_device_sync_focus (&seat->data_device);
meta_wayland_data_device_primary_set_keyboard_focus (&seat->primary_data_device); meta_wayland_data_device_primary_set_keyboard_focus (&seat->primary_data_device);
meta_wayland_tablet_seat_set_pad_focus (seat->tablet_seat, surface); meta_wayland_tablet_seat_set_pad_focus (seat->tablet_seat, surface);
meta_wayland_text_input_set_focus (seat->text_input, surface); meta_wayland_text_input_set_focus (seat->text_input, surface);