diff options
author | Ivan Molodetskikh <yalterz@gmail.com> | 2019-02-01 12:49:46 +0300 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2019-02-10 17:12:05 +0100 |
commit | 9e49ceb12985697fbfc0b2fa8f86143b29cc837b (patch) | |
tree | cfba2e4048f5d3aae835265c1af2ddbda49d3f4b /protocol | |
parent | 95ff898512754b11e8bd0d67f8b1f5b5d7426d65 (diff) |
data-control: add primary selection support
data-control: separate out a data_offer struct
This is a prerequisite to adding primary selection support.
data-control: separate out data_control_source
This is a prerequisite to adding primary selection support, since that
doesn't use wlr_data_source, but rather wlr_primary_selection_source.
Update the data-control protocol
data-control: add primary selection support
Merge create_offer and create_primary_offer
Extract code into data_control_source_destroy()
Fix pointer style
Move resource neutralization to destructor
Store wl_resource in the data_offer
Extract data_offer destruction into a function
Diffstat (limited to 'protocol')
-rw-r--r-- | protocol/wlr-data-control-unstable-v1.xml | 89 |
1 files changed, 76 insertions, 13 deletions
diff --git a/protocol/wlr-data-control-unstable-v1.xml b/protocol/wlr-data-control-unstable-v1.xml index a5887550..3e39f2ac 100644 --- a/protocol/wlr-data-control-unstable-v1.xml +++ b/protocol/wlr-data-control-unstable-v1.xml @@ -2,6 +2,7 @@ <protocol name="wlr_data_control_unstable_v1"> <copyright> Copyright © 2018 Simon Ser + Copyright © 2019 Ivan Molodetskikh Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -40,7 +41,7 @@ interface version number is reset. </description> - <interface name="zwlr_data_control_manager_v1" version="1"> + <interface name="zwlr_data_control_manager_v1" version="2"> <description summary="manager to control data devices"> This interface is a manager that allows creating per-seat data device controls. @@ -68,9 +69,18 @@ appropriate destroy request has been called. </description> </request> + + <!-- Version 2 additions --> + + <event name="primary_selection" since="2"> + <description summary="advertise primary selection support"> + This event can be sent when binding to the wlr_data_control_manager + global to advertise that it supports the primary selection. + </description> + </event> </interface> - <interface name="zwlr_data_control_device_v1" version="1"> + <interface name="zwlr_data_control_device_v1" version="2"> <description summary="manage a data device for a seat"> This interface allows a client to manage a seat's selection. @@ -79,8 +89,14 @@ <request name="set_selection"> <description summary="copy data to the selection"> - All objects created by the device will still remain valid, until their - appropriate destroy request has been called. + This request asks the compositor to set the selection to the data from + the source on behalf of the client. + + The given source may not be used in any further set_selection or + set_primary_selection requests. Attempting to use a previously used + source is a protocol error. + + To unset the selection, set the source to NULL. </description> <arg name="source" type="object" interface="zwlr_data_control_source_v1" allow-null="true"/> @@ -95,20 +111,19 @@ <event name="data_offer"> <description summary="introduce a new wlr_data_control_offer"> The data_offer event introduces a new wlr_data_control_offer object, - which will subsequently be used in the wlr_data_control_device.selection - event. Immediately following the wlr_data_control_device.data_offer - event, the new data_offer object will send out - wlr_data_control_offer.offer events to describe the MIME types it - offers. - - This event replaces the previous data offer, which should be destroyed - by the client. + which will subsequently be used in either the + wlr_data_control_device.selection event (for the regular clipboard + selections) or the wlr_data_control_device.primary_selection event (for + the primary clipboard selections). Immediately following the + wlr_data_control_device.data_offer event, the new data_offer object + will send out wlr_data_control_offer.offer events to describe the MIME + types it offers. </description> <arg name="id" type="new_id" interface="zwlr_data_control_offer_v1"/> </event> <event name="selection"> - <description summary="introduce a new wlr_data_control_offer"> + <description summary="advertise new selection"> The selection event is sent out to notify the client of a new wlr_data_control_offer for the selection for this device. The wlr_data_control_device.data_offer and the wlr_data_control_offer.offer @@ -118,6 +133,9 @@ wlr_data_control_offer or NULL is received. The client must destroy the previous selection wlr_data_control_offer, if any, upon receiving this event. + + The first selection event is sent upon binding the + wlr_data_control_device object. </description> <arg name="id" type="object" interface="zwlr_data_control_offer_v1" allow-null="true"/> @@ -129,6 +147,51 @@ the client. </description> </event> + + <!-- Version 2 additions --> + + <event name="primary_selection" since="2"> + <description summary="advertise new primary selection"> + The primary_selection event is sent out to notify the client of a new + wlr_data_control_offer for the primary selection for this device. The + wlr_data_control_device.data_offer and the wlr_data_control_offer.offer + events are sent out immediately before this event to introduce the data + offer object. The primary_selection event is sent to a client when a + new primary selection is set. The wlr_data_control_offer is valid until + a new wlr_data_control_offer or NULL is received. The client must + destroy the previous primary selection wlr_data_control_offer, if any, + upon receiving this event. + + If the compositor supports primary selection, the first + primary_selection event is sent upon binding the + wlr_data_control_device object. + </description> + <arg name="id" type="object" interface="zwlr_data_control_offer_v1" + allow-null="true"/> + </event> + + <request name="set_primary_selection" since="2"> + <description summary="copy data to the primary selection"> + This request asks the compositor to set the primary selection to the + data from the source on behalf of the client. + + The given source may not be used in any further set_selection or + set_primary_selection requests. Attempting to use a previously used + source is a protocol error. + + To unset the primary selection, set the source to NULL. + + The compositor will ignore this request if it does not support primary + selection. + </description> + <arg name="source" type="object" interface="zwlr_data_control_source_v1" + allow-null="true"/> + </request> + + <enum name="error" since="2"> + <entry name="used_source" value="1" + summary="source given to set_selection or set_primary_selection was already used before"/> + </enum> </interface> <interface name="zwlr_data_control_source_v1" version="1"> |