Merge branch 'data-device-focus' into 'main'

protocol: add wl_data_device.{enter,leave}

Closes #37

See merge request wayland/wayland!260
This commit is contained in:
Simon Ser 2025-10-13 11:55:45 +00:00
commit a9d13ecd4d

View file

@ -518,7 +518,7 @@
</event> </event>
</interface> </interface>
<interface name="wl_data_offer" version="3"> <interface name="wl_data_offer" version="4">
<description summary="offer to transfer data"> <description summary="offer to transfer data">
A wl_data_offer represents a piece of data offered for transfer A wl_data_offer represents a piece of data offered for transfer
by another client (the source client). It is used by the by another client (the source client). It is used by the
@ -711,7 +711,7 @@
</event> </event>
</interface> </interface>
<interface name="wl_data_source" version="3"> <interface name="wl_data_source" version="4">
<description summary="offer to transfer data"> <description summary="offer to transfer data">
The wl_data_source object is the source side of a wl_data_offer. The wl_data_source object is the source side of a wl_data_offer.
It is created by the source client in a data transfer and It is created by the source client in a data transfer and
@ -866,7 +866,7 @@
</event> </event>
</interface> </interface>
<interface name="wl_data_device" version="3"> <interface name="wl_data_device" version="4">
<description summary="data transfer device"> <description summary="data transfer device">
There is one wl_data_device per seat which can be obtained There is one wl_data_device per seat which can be obtained
from the global wl_data_device_manager singleton. from the global wl_data_device_manager singleton.
@ -1006,13 +1006,12 @@
data_device.data_offer and the data_offer.offer events are data_device.data_offer and the data_offer.offer events are
sent out immediately before this event to introduce the data sent out immediately before this event to introduce the data
offer object. The selection event is sent to a client offer object. The selection event is sent to a client
immediately before receiving keyboard focus and when a new immediately before receiving data device focus and when a new
selection is set while the client has keyboard focus. The selection is set while the client has data device focus. The
data_offer is valid until a new data_offer or NULL is received data_offer is valid until a new data_offer or NULL is received
or until the client loses keyboard focus. Switching surface with or until the client loses data device focus. The client must
keyboard focus within the same client doesn't mean a new selection destroy the previous selection data_offer, if any, upon receiving
will be sent. The client must destroy the previous selection this event.
data_offer, if any, upon receiving this event.
</description> </description>
<arg name="id" type="object" interface="wl_data_offer" allow-null="true" <arg name="id" type="object" interface="wl_data_offer" allow-null="true"
summary="selection data_offer object"/> summary="selection data_offer object"/>
@ -1025,9 +1024,33 @@
This request destroys the data device. This request destroys the data device.
</description> </description>
</request> </request>
<!-- Version 4 additions -->
<event name="enter" since="4">
<description summary="focus gained">
Notification that this seat's data device has gained focus.
The compositor must send the wl_data_device.selection event before this
event.
Before version 4, data device focus was indicated by keyboard focus.
Switching surface with keyboard focus within the same client didn't mean
a new selection event was sent.
</description>
</event>
<event name="leave" since="4">
<description summary="focus lost">
Notification that this seat's data device has lost focus.
The client will stop receiving selection events until the next enter
event.
</description>
</event>
</interface> </interface>
<interface name="wl_data_device_manager" version="3"> <interface name="wl_data_device_manager" version="4">
<description summary="data transfer interface"> <description summary="data transfer interface">
The wl_data_device_manager is a singleton global object that The wl_data_device_manager is a singleton global object that
provides access to inter-client data transfer mechanisms such as provides access to inter-client data transfer mechanisms such as