Signed-off-by: Lyude <cp...@redhat.com> --- Changes * Add new interfaces to replace reuse of wl_data_(source|offer) * Get rid of the selection changed event since we now have our own version of wl_data_(source|offer), and clients can just assume destroyed events indicate that their data in the primary clipboard has been replaced. * Get rid of summary on arguments, I noticed most of the official wayland protocol doesn't actually use these, and they were mostly redundant anyway. * s/selection_set/set_selection/ * Add destructor requests for all interfaces
Makefile.am | 1 + unstable/primary-selection/README | 4 + .../primary-selection-unstable-v1.xml | 178 +++++++++++++++++++++ 3 files changed, 183 insertions(+) create mode 100644 unstable/primary-selection/README create mode 100644 unstable/primary-selection/primary-selection-unstable-v1.xml diff --git a/Makefile.am b/Makefile.am index 5926a41..582a49e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -5,6 +5,7 @@ unstable_protocols = \ unstable/text-input/text-input-unstable-v1.xml \ unstable/input-method/input-method-unstable-v1.xml \ unstable/xdg-shell/xdg-shell-unstable-v5.xml \ + unstable/primary-selection/primary-selection-unstable-v1.xml \ $(NULL) nobase_dist_pkgdata_DATA = \ diff --git a/unstable/primary-selection/README b/unstable/primary-selection/README new file mode 100644 index 0000000..2dfce3d --- /dev/null +++ b/unstable/primary-selection/README @@ -0,0 +1,4 @@ +Primary selection protocol + +Maintainers: +Lyude <cp...@redhat.com> diff --git a/unstable/primary-selection/primary-selection-unstable-v1.xml b/unstable/primary-selection/primary-selection-unstable-v1.xml new file mode 100644 index 0000000..32a4660 --- /dev/null +++ b/unstable/primary-selection/primary-selection-unstable-v1.xml @@ -0,0 +1,178 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<protocol name="primary_selection"> + <copyright> + Copyright © 2015 Red Hat + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice (including the next + paragraph) shall be included in all copies or substantial portions of the + Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + </copyright> + + <interface name="zwp_primary_selection_device_manager_v1" version="1"> + <description summary="X primary selection emulation"> + Provides the ability to have a primary selection buffer to match that of + the X server. This allows users to select bodies of text, and then paste + them in another buffer without having to do the initial paste. + + The primary buffer manager is in charge of handling client's requests to + indicate that text has been selection, along with handling client's access + to selected text. + </description> + + <request name="create_primary_selection_source"> + <description summary="create a new primary selection source"> + Create a new primary selection source. + </description> + <arg name="id" type="new_id" interface="zwp_primary_selection_source_v1"/> + </request> + + <request name="get_primary_selection_device"> + <description summary="primary selection device manager"> + Singleton global object that manages the zwp_primary_selection_device_v1 + objects for each wl_seat. + </description> + <arg name="id" type="new_id" interface="zwp_primary_selection_device_v1"/> + <arg name="seat" type="object" interface="wl_seat"/> + </request> + + <request name="destroy"> + <description summary="destroy the primary selection device manager"> + Destroy the primary selection device manager. + </description> + </request> + </interface> + + <interface name="zwp_primary_selection_device_v1" version="1"> + <request name="set_selection"> + <description summary="set the primary selection"> + Set the current contents of the primary selection buffer. This clears + anything which was previously held in the primary selection buffer. + + This request can only be used while the window is focused. + </description> + <arg name="source" type="object" interface="zwp_primary_selection_source_v1"/> + </request> + + <event name="selection_offer"> + <description summary="primary selection buffer is ready for reading"> + Sent when the client has permission to read from the primary selection + buffer. + + This event is sent whenever the client receives a middle click, and will + be received by the client before the actual middle click event. While + the compositor is free to bind this event to another input event (such + as a keyboard shortcut), the client should always treat pastes from the + primary selection as middle clicks. This is to ensure the behavior is + identical to that of primary selection pasting in X. + + It is up to the client to decide whether or not it is appropriate to + read from the primary buffer and paste it's contents. + </description> + <arg name="offer" type="new_id" interface="zwp_primary_selection_offer_v1"/> + </event> + + <request name="destroy"> + <description summary="destroy the primary selection device"> + Destroy the primary selection device. + </description> + </request> + </interface> + + <interface name="zwp_primary_selection_offer_v1" version="1"> + <description summary="offer to transfer primary selection contents"> + A wp_primary_selection_offer represents an offer to transfer the contents + of the primary selection clipboard to the client. Similar to + wl_data_offer, the offer also describes the different mime types that the + data can be converted to and provides the mechanisms for transferring the + data directly to the client. + </description> + + <request name="receive"> + <description summary="request that the data is transferred"> + To transfer the contents of the primary selection clipboard, the client + issues this request and indicates the mime type that it wants to + receive. The transfer happens through the passed file descriptor + (typically created with the pipe system call). The source client writes + the data in the mime type representation requested and then closes the + file descriptor. + + The receiving client reads from the read end of the pipe until EOF and + closes its end, at which point the transfer is complete. + </description> + <arg name="mime_type" type="string"/> + <arg name="fd" type="fd"/> + </request> + + <request name="destroy"> + <description summary="destroy the primary selection offer"> + Destroy the primary selection offer. + </description> + </request> + + <event name="offer"> + <description summary="advertise offered mime type"> + Sent immediately after creating the wp_primary_selection_offer object. + One event per offered mime type. + </description> + <arg name="mime_type" type="string"/> + </event> + </interface> + + <interface name="zwp_primary_selection_source_v1" version="1"> + <description summary="offer to replace the contents of the primary selection"> + Similar to the relationship between a wl_data_offer and a wl_data_source + object, the wp_primary_selection_source object is the source side of + wp_primary_selection_offer, it provides a way to describe the offered + data and respond to requests to transfer the new contents of the primary + selection clipboard. + </description> + + <request name="offer"> + <description summary="add an offered mime type"> + This request adds a mime type to the set of mime types advertised to + targets. Can be called several times to offer multiple types. + </description> + <arg name="mime_type" type="string"/> + </request> + + <request name="destroy"> + <description summary="destroy the primary selection source"> + Destroy the primary selection source. + </description> + </request> + + <event name="send"> + <description summary="send the primary selection contents"> + Request for the current primary selection contents from the client. + Send the specified mime type over the passed file descriptor, then + close it. + </description> + <arg name="mime_type" type="string"/> + <arg name="fd" type="fd"/> + </event> + + <event name="cancelled"> + <description summary="request for primary selection contents was canceled"> + This primary selection source has been replaced by another primary + selection source. The client should clean up and destroy this primary + selection source. + </description> + </event> + </interface> +</protocol> -- 2.5.0 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel