data-device, primary-selection: add request_set_selection

This makes compositors able to block and/or customize set_selection requests
coming from clients. For instance, it's possible for a compositor to disable
rich selection content (by removing all MIME types except text/plain). This
commit implements the design proposed in [1].

Two new events are added to wlr_seat: request_set_selection and
request_set_primary_selection. Compositors need to listen to these events and
either destroy the source or effectively set the selection.

Fixes https://github.com/swaywm/wlroots/issues/1138

[1]: https://github.com/swaywm/wlroots/issues/1367#issuecomment-442403454
This commit is contained in:
emersion 2018-11-29 19:30:04 +01:00
parent c41d01306d
commit 4cb0697e57
15 changed files with 142 additions and 63 deletions

View file

@ -128,8 +128,8 @@ struct wlr_xwm {
struct wl_listener compositor_new_surface;
struct wl_listener compositor_destroy;
struct wl_listener seat_selection;
struct wl_listener seat_primary_selection;
struct wl_listener seat_set_selection;
struct wl_listener seat_set_primary_selection;
struct wl_listener seat_start_drag;
struct wl_listener seat_drag_focus;
struct wl_listener seat_drag_motion;