diff options
Diffstat (limited to 'xwayland/selection.c')
-rw-r--r-- | xwayland/selection.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/xwayland/selection.c b/xwayland/selection.c new file mode 100644 index 00000000..a83e206c --- /dev/null +++ b/xwayland/selection.c @@ -0,0 +1,47 @@ +#include <xcb/xfixes.h> +#include "wlr/util/log.h" +#include "xwm.h" + +static void xwm_handle_selection_notify(struct wlr_xwm *xwm, xcb_generic_event_t + *event) { + wlr_log(L_DEBUG, "TODO: SELECTION NOTIFY"); +} + +static int xwm_handle_selection_property_notify(struct wlr_xwm *xwm, + xcb_generic_event_t *event) { + wlr_log(L_DEBUG, "TODO: SELECTION PROPERTY NOTIFY"); + return 1; +} + +static void xwm_handle_selection_request(struct wlr_xwm *xwm, xcb_generic_event_t + *event) { + wlr_log(L_DEBUG, "TODO: SELECTION REQUEST"); + return; +} + +static int weston_wm_handle_xfixes_selection_notify(struct wlr_xwm *xwm, + xcb_generic_event_t *event) { + wlr_log(L_DEBUG, "TODO: XFIXES SELECTION NOTIFY"); + return 1; +} + + +int xwm_handle_selection_event(struct wlr_xwm *xwm, xcb_generic_event_t *event) { + switch (event->response_type & ~0x80) { + case XCB_SELECTION_NOTIFY: + xwm_handle_selection_notify(xwm, event); + return 1; + case XCB_PROPERTY_NOTIFY: + return xwm_handle_selection_property_notify(xwm, event); + case XCB_SELECTION_REQUEST: + xwm_handle_selection_request(xwm, event); + return 1; + } + + switch (event->response_type - xwm->xfixes->first_event) { + case XCB_XFIXES_SELECTION_NOTIFY: + return weston_wm_handle_xfixes_selection_notify(xwm, event); + } + + return 0; +} |