From 166dcc5a099fd870e9b876fda8fb152c2cdd3c4c Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Sun, 7 Oct 2012 15:08:03 +0200 Subject: [PATCH] wlt: toolkit: add helpers to create/manage selections Two new helpers which are needed to implement copy-support. They create data-sources and set the current selection-source. This allows widgets to copy data for others to paste. Signed-off-by: David Herrmann --- src/wlt_toolkit.c | 26 ++++++++++++++++++++++++++ src/wlt_toolkit.h | 4 ++++ 2 files changed, 30 insertions(+) diff --git a/src/wlt_toolkit.c b/src/wlt_toolkit.c index bd66ddd..e23fc33 100644 --- a/src/wlt_toolkit.c +++ b/src/wlt_toolkit.c @@ -894,6 +894,32 @@ int wlt_display_get_selection_fd(struct wlt_display *disp, const char *mime) return p[0]; } +int wlt_display_new_data_source(struct wlt_display *disp, + struct wl_data_source **out) +{ + struct wl_data_source *src; + + if (!disp) + return -EINVAL; + + src = wl_data_device_manager_create_data_source(disp->w_manager); + if (!src) + return -EFAULT; + + *out = src; + return 0; +} + +void wlt_display_set_selection(struct wlt_display *disp, + struct wl_data_source *selection) +{ + if (!disp) + return; + + wl_data_device_set_selection(disp->w_data_dev, selection, + disp->last_serial); +} + static const struct wl_data_device_listener data_dev_listener = { .data_offer = data_dev_data_offer, .enter = data_dev_enter, diff --git a/src/wlt_toolkit.h b/src/wlt_toolkit.h index c6e171f..df2edc1 100644 --- a/src/wlt_toolkit.h +++ b/src/wlt_toolkit.h @@ -137,6 +137,10 @@ void wlt_display_unregister_cb(struct wlt_display *disp, int wlt_display_get_selection_fd(struct wlt_display *disp, const char *mime); int wlt_display_get_selection_to_fd(struct wlt_display *disp, const char *mime, int output_fd); +int wlt_display_new_data_source(struct wlt_display *disp, + struct wl_data_source **out); +void wlt_display_set_selection(struct wlt_display *disp, + struct wl_data_source *selection); void wlt_window_ref(struct wlt_window *wnd); void wlt_window_unref(struct wlt_window *wnd); -- 2.7.4