SDL  2.0
The wl_data_device_manager interface

Macros

#define WL_DATA_DEVICE_MANAGER_CREATE_DATA_SOURCE_SINCE_VERSION   1
 
#define WL_DATA_DEVICE_MANAGER_GET_DATA_DEVICE_SINCE_VERSION   1
 

Enumerations

enum  wl_data_device_manager_dnd_action {
  WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE = 0,
  WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY = 1,
  WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE = 2,
  WL_DATA_DEVICE_MANAGER_DND_ACTION_ASK = 4
}
 

Functions

static void wl_data_device_manager_set_user_data (struct wl_data_device_manager *wl_data_device_manager, void *user_data)
 
static voidwl_data_device_manager_get_user_data (struct wl_data_device_manager *wl_data_device_manager)
 
static void wl_data_device_manager_destroy (struct wl_data_device_manager *wl_data_device_manager)
 
static struct wl_data_source * wl_data_device_manager_create_data_source (struct wl_data_device_manager *wl_data_device_manager)
 
static struct wl_data_device * wl_data_device_manager_get_data_device (struct wl_data_device_manager *wl_data_device_manager, struct wl_seat *seat)
 

Detailed Description

The wl_data_device_manager is a singleton global object that provides access to inter-client data transfer mechanisms such as copy-and-paste and drag-and-drop. These mechanisms are tied to a wl_seat and this interface lets a client get a wl_data_device corresponding to a wl_seat.

Depending on the version bound, the objects created from the bound wl_data_device_manager object will have different requirements for functioning properly. See wl_data_source.set_actions, wl_data_offer.accept and wl_data_offer.finish for details.

Macro Definition Documentation

◆ WL_DATA_DEVICE_MANAGER_CREATE_DATA_SOURCE_SINCE_VERSION

#define WL_DATA_DEVICE_MANAGER_CREATE_DATA_SOURCE_SINCE_VERSION   1

Definition at line 2653 of file wayland-client-protocol.h.

◆ WL_DATA_DEVICE_MANAGER_GET_DATA_DEVICE_SINCE_VERSION

#define WL_DATA_DEVICE_MANAGER_GET_DATA_DEVICE_SINCE_VERSION   1

Definition at line 2657 of file wayland-client-protocol.h.

Enumeration Type Documentation

◆ wl_data_device_manager_dnd_action

drag and drop actions

This is a bitmask of the available/preferred actions in a drag-and-drop operation.

In the compositor, the selected action is a result of matching the actions offered by the source and destination sides. "action" events with a "none" action will be sent to both source and destination if there is no match. All further checks will effectively happen on (source actions ∩ destination actions).

In addition, compositors may also pick different actions in reaction to key modifiers being pressed. One common design that is used in major toolkits (and the behavior recommended for compositors) is:

  • If no modifiers are pressed, the first match (in bit order) will be used.
  • Pressing Shift selects "move", if enabled in the mask.
  • Pressing Control selects "copy", if enabled in the mask.

Behavior beyond that is considered implementation-dependent. Compositors may for example bind other modifiers (like Alt/Meta) or drags initiated with other buttons than BTN_LEFT to specific actions (e.g. "ask").

Enumerator
WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE 

no action

WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY 

copy action

WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE 

move action

WL_DATA_DEVICE_MANAGER_DND_ACTION_ASK 

ask action

Definition at line 2626 of file wayland-client-protocol.h.

2626  {
2627  /**
2628  * no action
2629  */
2631  /**
2632  * copy action
2633  */
2635  /**
2636  * move action
2637  */
2639  /**
2640  * ask action
2641  */
2643 };

Function Documentation

◆ wl_data_device_manager_create_data_source()

static struct wl_data_source* wl_data_device_manager_create_data_source ( struct wl_data_device_manager *  wl_data_device_manager)
static

Create a new data source.

Definition at line 2692 of file wayland-client-protocol.h.

References NULL, WL_DATA_DEVICE_MANAGER_CREATE_DATA_SOURCE, and wl_data_source_interface.

2693 {
2694  struct wl_proxy *id;
2695 
2696  id = wl_proxy_marshal_constructor((struct wl_proxy *) wl_data_device_manager,
2698 
2699  return (struct wl_data_source *) id;
2700 }
const struct wl_interface wl_data_source_interface
GLuint id
#define WL_DATA_DEVICE_MANAGER_CREATE_DATA_SOURCE
#define NULL
Definition: begin_code.h:164

◆ wl_data_device_manager_destroy()

static void wl_data_device_manager_destroy ( struct wl_data_device_manager *  wl_data_device_manager)
inlinestatic

Definition at line 2681 of file wayland-client-protocol.h.

2682 {
2683  wl_proxy_destroy((struct wl_proxy *) wl_data_device_manager);
2684 }

◆ wl_data_device_manager_get_data_device()

static struct wl_data_device* wl_data_device_manager_get_data_device ( struct wl_data_device_manager *  wl_data_device_manager,
struct wl_seat *  seat 
)
static

Create a new data device for a given seat.

Definition at line 2708 of file wayland-client-protocol.h.

References NULL, wl_data_device_interface, and WL_DATA_DEVICE_MANAGER_GET_DATA_DEVICE.

2709 {
2710  struct wl_proxy *id;
2711 
2712  id = wl_proxy_marshal_constructor((struct wl_proxy *) wl_data_device_manager,
2714 
2715  return (struct wl_data_device *) id;
2716 }
GLuint id
const struct wl_interface wl_data_device_interface
#define WL_DATA_DEVICE_MANAGER_GET_DATA_DEVICE
#define NULL
Definition: begin_code.h:164

◆ wl_data_device_manager_get_user_data()

static void* wl_data_device_manager_get_user_data ( struct wl_data_device_manager *  wl_data_device_manager)
inlinestatic

Definition at line 2668 of file wayland-client-protocol.h.

2669 {
2670  return wl_proxy_get_user_data((struct wl_proxy *) wl_data_device_manager);
2671 }

◆ wl_data_device_manager_set_user_data()

static void wl_data_device_manager_set_user_data ( struct wl_data_device_manager *  wl_data_device_manager,
void user_data 
)
inlinestatic

Definition at line 2661 of file wayland-client-protocol.h.

2662 {
2663  wl_proxy_set_user_data((struct wl_proxy *) wl_data_device_manager, user_data);
2664 }