package wayland

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Data transfer device.

There is one wl_data_device per seat which can be obtained from the global wl_data_device_manager singleton.

A wl_data_device provides access to inter-client data transfer mechanisms such as copy-and-paste and drag-and-drop.

type 'v t = ([ `Wl_data_device ], 'v, [ `Server ]) Proxy.t

Version 1

val selection : [< `V1 | `V2 | `V3 ] t -> ([ `Wl_data_offer ], 'a, [ `Server ]) Proxy.t option -> unit

Advertise new selection.

The selection event is sent out to notify the client of a new wl_data_offer for the selection for this device. The data_device.data_offer and the data_offer.offer events are sent out immediately before this event to introduce the data offer object. The selection event is sent to a client immediately before receiving keyboard focus and when a new selection is set while the client has keyboard focus. The data_offer is valid until a new data_offer or NULL is received or until the client loses keyboard focus. Switching surface with keyboard focus within the same client doesn't mean a new selection will be sent. The client must destroy the previous selection data_offer, if any, upon receiving this event.

val drop : [< `V1 | `V2 | `V3 ] t -> unit

End drag-and-drop session successfully.

The event is sent when a drag-and-drop operation is ended because the implicit grab is removed.

The drag-and-drop destination is expected to honor the last action received through wl_data_offer.action, if the resulting action is "copy" or "move", the destination can still perform wl_data_offer.receive requests, and is expected to end all transfers with a wl_data_offer.finish request.

If the resulting action is "ask", the action will not be considered final. The drag-and-drop destination is expected to perform one last wl_data_offer.set_actions request, or wl_data_offer.destroy in order to cancel the operation.

val motion : [< `V1 | `V2 | `V3 ] t -> time:int32 -> x:Fixed.t -> y:Fixed.t -> unit

Drag-and-drop session motion.

This event is sent when the drag-and-drop pointer moves within the currently focused surface. The new position of the pointer is provided by the x and y arguments, in surface-local coordinates.

val leave : [< `V1 | `V2 | `V3 ] t -> unit

End drag-and-drop session.

This event is sent when the drag-and-drop pointer leaves the surface and the session ends. The client must destroy the wl_data_offer introduced at enter time at this point.

val enter : [< `V1 | `V2 | `V3 ] t -> serial:int32 -> surface:([ `Wl_surface ], 'a, [ `Server ]) Proxy.t -> x:Fixed.t -> y:Fixed.t -> ([ `Wl_data_offer ], 'b, [ `Server ]) Proxy.t option -> unit

Initiate drag-and-drop session.

This event is sent when an active drag-and-drop pointer enters a surface owned by the client. The position of the pointer at enter time is provided by the x and y arguments, in surface-local coordinates.

val data_offer : [< `V1 | `V2 | `V3 ] as 'a t -> [[ `Wl_data_offer ], 'b, [ `Server ]] Proxy.Handler.t -> ([ `Wl_data_offer ], 'c, [ `Server ]) Proxy.t

Introduce a new wl_data_offer.

The data_offer event introduces a new wl_data_offer object, which will subsequently be used in either the data_device.enter event (for drag-and-drop) or the data_device.selection event (for selections). Immediately following the data_device.data_offer event, the new data_offer object will send out data_offer.offer events to describe the mime types it offers.

Version 2, 3

Handlers

Note: Servers will always want to use v1.

class virtual +'a v1 : object ... end

Handler for a proxy with version >= 1.

class virtual +'a v2 : object ... end

Handler for a proxy with version >= 2.

class virtual +'a v3 : object ... end

Handler for a proxy with version >= 3.