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:
parent
743fb6df30
commit
5ca10c31d1
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user