aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
Diffstat (limited to 'backend')
-rw-r--r--backend/wayland/tablet_v2.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/backend/wayland/tablet_v2.c b/backend/wayland/tablet_v2.c
index 9801b298..26e2d32a 100644
--- a/backend/wayland/tablet_v2.c
+++ b/backend/wayland/tablet_v2.c
@@ -28,6 +28,7 @@ struct wlr_wl_tablet_tool {
struct wlr_tablet_tool wlr_tool;
/* semi-static */
+ struct wlr_wl_output *output;
struct wlr_wl_input_device *tablet;
double pre_x, pre_y;
@@ -551,12 +552,14 @@ static void handle_tablet_tool_proximity_in(void *data,
struct wlr_wl_tablet_tool *tool = data;
tool->is_in = true;
tool->tablet = zwp_tablet_v2_get_user_data(tablet_id);
+ tool->output = wl_surface_get_user_data(surface);
}
static void handle_tablet_tool_proximity_out(void *data,
struct zwp_tablet_tool_v2 *id) {
struct wlr_wl_tablet_tool *tool = data;
tool->is_out = true;
+ tool->output = NULL;
}
static void handle_tablet_tool_down(void *data,
@@ -576,8 +579,11 @@ static void handle_tablet_tool_motion(void *data,
struct zwp_tablet_tool_v2 *id,
wl_fixed_t x, wl_fixed_t y) {
struct wlr_wl_tablet_tool *tool = data;
- tool->x = wl_fixed_to_double(x);
- tool->y = wl_fixed_to_double(y);
+ struct wlr_wl_output *output = tool->output;
+ assert(output);
+
+ tool->x = wl_fixed_to_double(x) / output->wlr_output.width;
+ tool->y = wl_fixed_to_double(y) / output->wlr_output.height;
}
static void handle_tablet_tool_pressure(void *data,