aboutsummaryrefslogtreecommitdiff
path: root/harness
diff options
context:
space:
mode:
Diffstat (limited to 'harness')
-rw-r--r--harness/include/plugin.h11
-rw-r--r--harness/src/wl.c32
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)