diff options
Diffstat (limited to 'harness')
-rw-r--r-- | harness/include/plugin.h | 11 | ||||
-rw-r--r-- | harness/src/wl.c | 32 |
2 files changed, 26 insertions, 17 deletions
diff --git a/harness/include/plugin.h b/harness/include/plugin.h index c48a2f5..be3a022 100644 --- a/harness/include/plugin.h +++ b/harness/include/plugin.h @@ -8,6 +8,7 @@ #include <stdlib.h> #include <wlr/types/wlr_input_device.h> #include <wlr/types/wlr_keyboard.h> +#include <wlr/types/wlr_pointer.h> #include "plugin_types.h" #include <foreign_intf.h> @@ -24,6 +25,7 @@ EXPORT_INCLUDE(<foreign_intf.h>) EXPORT_INCLUDE(<wlr/types/wlr_keyboard.h>) EXPORT_INCLUDE(<wlr/types/wlr_input_device.h>) +EXPORT_INCLUDE(<wlr/types/wlr_pointer.h>) // clang-format on #define MAX_QUEUED_ACTIONS 8 @@ -139,9 +141,12 @@ typedef struct PLUGIN { * Handles a keybinding. */ EXPORT(opqst_t (*plugin_handle_keybinding)( - struct wlr_keyboard *keyboard, - struct wlr_keyboard_key_event *event, uint32_t modifiers, uint32_t keysym, - uint32_t codepoint, int *out_handled, opqst_t state)); + struct wlr_keyboard *keyboard, struct wlr_keyboard_key_event *event, + uint32_t modifiers, uint32_t keysym, uint32_t codepoint, int *out_handled, + opqst_t state)); + + EXPORT(opqst_t (*plugin_handle_button)(struct wlr_pointer_button_event *event, + opqst_t state)); /* * Handles a surface being mapped, unmapped or destroyed. diff --git a/harness/src/wl.c b/harness/src/wl.c index 2cefe06..8b7f437 100644 --- a/harness/src/wl.c +++ b/harness/src/wl.c @@ -455,21 +455,25 @@ static void server_cursor_button(struct wl_listener *listener, void *data) struct tinywl_server *server = wl_container_of(listener, server, cursor_button); struct wlr_pointer_button_event *event = data; + + plugin_call_update_state(server->plugin, plugin_handle_button, event); + /* Notify the client with pointer focus that a button press has occurred */ - wlr_seat_pointer_notify_button(server->seat, event->time_msec, event->button, - event->state); - double sx, sy; - struct wlr_surface *surface = NULL; - struct tinywl_toplevel *toplevel = desktop_toplevel_at( - server, server->cursor->x, server->cursor->y, &surface, &sx, &sy); - if (event->state == WLR_BUTTON_RELEASED) { - /* If you released any buttons, we exit interactive move/resize mode. */ - reset_cursor_mode(server); - } - else { - /* Focus that client if the button was _pressed_ */ - focus_toplevel(toplevel, surface); - } + // wlr_seat_pointer_notify_button(server->seat, event->time_msec, + // event->button, + // event->state); + // double sx, sy; + // struct wlr_surface *surface = NULL; + // struct tinywl_toplevel *toplevel = desktop_toplevel_at( + // server, server->cursor->x, server->cursor->y, &surface, &sx, &sy); + // if (event->state == WLR_BUTTON_RELEASED) { + // /* If you released any buttons, we exit interactive move/resize mode. */ + // reset_cursor_mode(server); + // } + // else { + // /* Focus that client if the button was _pressed_ */ + // focus_toplevel(toplevel, surface); + // } } static void server_cursor_axis(struct wl_listener *listener, void *data) |