input: subscribe to tablet tool events from cursor

Contrary to the raw tablet events, the cursor events transform
the coordinates based on a mapped output orientation.
Otherwise those events are the same.
This commit is contained in:
Jens Peters 2024-08-08 17:46:20 +02:00 committed by Johan Malm
parent 670cc0f511
commit 060626e9c7
2 changed files with 16 additions and 16 deletions

View file

@ -23,10 +23,10 @@ struct drawing_tablet {
double slider; double slider;
double wheel_delta; double wheel_delta;
struct { struct {
struct wl_listener proximity; struct wl_listener tablet_tool_proximity;
struct wl_listener axis; struct wl_listener tablet_tool_axis;
struct wl_listener tip; struct wl_listener tablet_tool_tip;
struct wl_listener button; struct wl_listener tablet_tool_button;
struct wl_listener destroy; struct wl_listener destroy;
} handlers; } handlers;
struct wl_list link; /* seat.tablets */ struct wl_list link; /* seat.tablets */

View file

@ -236,7 +236,7 @@ notify_motion(struct drawing_tablet *tablet, struct drawing_tablet_tool *tool,
} }
static void static void
handle_proximity(struct wl_listener *listener, void *data) handle_tablet_tool_proximity(struct wl_listener *listener, void *data)
{ {
struct wlr_tablet_tool_proximity_event *ev = data; struct wlr_tablet_tool_proximity_event *ev = data;
struct drawing_tablet *tablet = ev->tablet->data; struct drawing_tablet *tablet = ev->tablet->data;
@ -286,7 +286,7 @@ handle_proximity(struct wl_listener *listener, void *data)
static bool is_down_mouse_emulation = false; static bool is_down_mouse_emulation = false;
static void static void
handle_axis(struct wl_listener *listener, void *data) handle_tablet_tool_axis(struct wl_listener *listener, void *data)
{ {
struct wlr_tablet_tool_axis_event *ev = data; struct wlr_tablet_tool_axis_event *ev = data;
struct drawing_tablet *tablet = ev->tablet->data; struct drawing_tablet *tablet = ev->tablet->data;
@ -460,7 +460,7 @@ seat_pointer_end_grab(struct drawing_tablet_tool *tool,
} }
static void static void
handle_tip(struct wl_listener *listener, void *data) handle_tablet_tool_tip(struct wl_listener *listener, void *data)
{ {
struct wlr_tablet_tool_tip_event *ev = data; struct wlr_tablet_tool_tip_event *ev = data;
struct drawing_tablet *tablet = ev->tablet->data; struct drawing_tablet *tablet = ev->tablet->data;
@ -535,7 +535,7 @@ handle_tip(struct wl_listener *listener, void *data)
} }
static void static void
handle_button(struct wl_listener *listener, void *data) handle_tablet_tool_button(struct wl_listener *listener, void *data)
{ {
struct wlr_tablet_tool_button_event *ev = data; struct wlr_tablet_tool_button_event *ev = data;
struct drawing_tablet *tablet = ev->tablet->data; struct drawing_tablet *tablet = ev->tablet->data;
@ -604,10 +604,10 @@ handle_destroy(struct wl_listener *listener, void *data)
wl_list_remove(&tablet->link); wl_list_remove(&tablet->link);
tablet_pad_attach_tablet(tablet->seat); tablet_pad_attach_tablet(tablet->seat);
wl_list_remove(&tablet->handlers.tip.link); wl_list_remove(&tablet->handlers.tablet_tool_tip.link);
wl_list_remove(&tablet->handlers.button.link); wl_list_remove(&tablet->handlers.tablet_tool_button.link);
wl_list_remove(&tablet->handlers.proximity.link); wl_list_remove(&tablet->handlers.tablet_tool_proximity.link);
wl_list_remove(&tablet->handlers.axis.link); wl_list_remove(&tablet->handlers.tablet_tool_axis.link);
wl_list_remove(&tablet->handlers.destroy.link); wl_list_remove(&tablet->handlers.destroy.link);
free(tablet); free(tablet);
} }
@ -636,10 +636,10 @@ tablet_init(struct seat *seat, struct wlr_input_device *wlr_device)
tablet->wheel_delta = 0.0; tablet->wheel_delta = 0.0;
wlr_log(WLR_INFO, "tablet dimensions: %.2fmm x %.2fmm", wlr_log(WLR_INFO, "tablet dimensions: %.2fmm x %.2fmm",
tablet->tablet->width_mm, tablet->tablet->height_mm); tablet->tablet->width_mm, tablet->tablet->height_mm);
CONNECT_SIGNAL(tablet->tablet, &tablet->handlers, axis); CONNECT_SIGNAL(seat->cursor, &tablet->handlers, tablet_tool_axis);
CONNECT_SIGNAL(tablet->tablet, &tablet->handlers, proximity); CONNECT_SIGNAL(seat->cursor, &tablet->handlers, tablet_tool_proximity);
CONNECT_SIGNAL(tablet->tablet, &tablet->handlers, tip); CONNECT_SIGNAL(seat->cursor, &tablet->handlers, tablet_tool_tip);
CONNECT_SIGNAL(tablet->tablet, &tablet->handlers, button); CONNECT_SIGNAL(seat->cursor, &tablet->handlers, tablet_tool_button);
CONNECT_SIGNAL(wlr_device, &tablet->handlers, destroy); CONNECT_SIGNAL(wlr_device, &tablet->handlers, destroy);
wl_list_insert(&seat->tablets, &tablet->link); wl_list_insert(&seat->tablets, &tablet->link);