diff --git a/include/pointer.h b/include/pointer.h index dec99b1..28fa51f 100644 --- a/include/pointer.h +++ b/include/pointer.h @@ -20,6 +20,8 @@ #include #include "wlr-virtual-pointer-unstable-v1.h" +#include "output.h" + struct pointer { struct nvnc* vnc; struct zwlr_virtual_pointer_v1* pointer; @@ -29,8 +31,7 @@ struct pointer { uint32_t current_x; uint32_t current_y; - uint32_t width; - uint32_t height; + const struct output* output; }; int pointer_init(struct pointer* self); diff --git a/src/main.c b/src/main.c index d4e294c..9802bba 100644 --- a/src/main.c +++ b/src/main.c @@ -699,8 +699,7 @@ int main(int argc, char* argv[]) keyboard_init(&self.keyboard_backend, self.kb_layout); self.pointer_backend.vnc = self.nvnc; - self.pointer_backend.width = out->width; - self.pointer_backend.height = out->height; + self.pointer_backend.output = self.selected_output; self.pointer_backend.pointer = zwlr_virtual_pointer_manager_v1_create_virtual_pointer( diff --git a/src/pointer.c b/src/pointer.c index 8481ccf..2f8de3f 100644 --- a/src/pointer.c +++ b/src/pointer.c @@ -75,9 +75,11 @@ void pointer_set(struct pointer* self, uint32_t x, uint32_t y, uint32_t t = gettime_ms(); if (x != self->current_x || y != self->current_y) - zwlr_virtual_pointer_v1_motion_absolute(self->pointer, t, x, y, - self->width, - self->height); + zwlr_virtual_pointer_v1_motion_absolute(self->pointer, t, + self->output->x + x, + self->output->y + y, + self->output->width, + self->output->height); self->current_x = x; self->current_y = y;