From 7a3edf6e6218b79e47541a0d5ebed64e094055b4 Mon Sep 17 00:00:00 2001 From: Tony Crisci Date: Thu, 21 Sep 2017 11:38:04 -0400 Subject: [PATCH] use double for cursor coordinates --- examples/compositor.c | 4 ++-- include/wlr/types/wlr_cursor.h | 2 +- include/wlr/types/wlr_seat.h | 4 ++-- types/wlr_seat.c | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/compositor.c b/examples/compositor.c index 7595c729..24013c52 100644 --- a/examples/compositor.c +++ b/examples/compositor.c @@ -366,8 +366,8 @@ static void handle_cursor_motion(struct wl_listener *listener, void *data) { if (surface) { struct example_xdg_surface_v6 *esurface = surface->data; - int32_t sx = sample->cursor->x - esurface->position.lx; - int32_t sy = sample->cursor->y - esurface->position.ly; + double sx = sample->cursor->x - esurface->position.lx; + double sy = sample->cursor->y - esurface->position.ly; // TODO z-order wlr_seat_pointer_enter(sample->wl_seat, surface->surface, diff --git a/include/wlr/types/wlr_cursor.h b/include/wlr/types/wlr_cursor.h index 5fc0ec76..88390e0d 100644 --- a/include/wlr/types/wlr_cursor.h +++ b/include/wlr/types/wlr_cursor.h @@ -11,7 +11,7 @@ struct wlr_cursor_state; struct wlr_cursor { struct wlr_cursor_state *state; - int x, y; + double x, y; struct { struct wl_signal motion; diff --git a/include/wlr/types/wlr_seat.h b/include/wlr/types/wlr_seat.h index 2993d693..221e4489 100644 --- a/include/wlr/types/wlr_seat.h +++ b/include/wlr/types/wlr_seat.h @@ -88,7 +88,7 @@ bool wlr_seat_pointer_surface_has_focus(struct wlr_seat *wlr_seat, * surface that was entered. Coordinates for the enter event are surface-local. */ void wlr_seat_pointer_enter(struct wlr_seat *wlr_seat, - struct wlr_surface *surface, int32_t sx, int32_t sy); + struct wlr_surface *surface, double sx, double sy); /** * Clear the focused surface for the pointer and leave all entered surfaces. @@ -100,7 +100,7 @@ void wlr_seat_pointer_clear_focus(struct wlr_seat *wlr_seat); * motion event are surface-local. */ void wlr_seat_pointer_send_motion(struct wlr_seat *wlr_seat, uint32_t time, - int32_t sx, int32_t sy); + double sx, double sy); /** * Send a button event to the surface with pointer focus. Coordinates for the diff --git a/types/wlr_seat.c b/types/wlr_seat.c index 2a0a1dcd..411c1182 100644 --- a/types/wlr_seat.c +++ b/types/wlr_seat.c @@ -261,7 +261,7 @@ static void handle_pointer_focus_resource_destroyed( } void wlr_seat_pointer_enter(struct wlr_seat *wlr_seat, - struct wlr_surface *surface, int32_t sx, int32_t sy) { + struct wlr_surface *surface, double sx, double sy) { assert(wlr_seat); if (wlr_seat->pointer_state.focused_surface == surface) { @@ -293,7 +293,7 @@ void wlr_seat_pointer_enter(struct wlr_seat *wlr_seat, if (handle) { uint32_t serial = wl_display_next_serial(wlr_seat->display); wl_pointer_send_enter(handle->pointer, serial, surface->resource, - wl_fixed_from_int(sx), wl_fixed_from_int(sy)); + wl_fixed_from_double(sx), wl_fixed_from_double(sy)); wl_pointer_send_frame(handle->pointer); } @@ -326,14 +326,14 @@ void wlr_seat_pointer_clear_focus(struct wlr_seat *wlr_seat) { } void wlr_seat_pointer_send_motion(struct wlr_seat *wlr_seat, uint32_t time, - int32_t sx, int32_t sy) { + double sx, double sy) { if (!wlr_seat->pointer_state.focused_handle) { // nobody to send the event to return; } wl_pointer_send_motion(wlr_seat->pointer_state.focused_handle->pointer, - time, wl_fixed_from_int(sx), wl_fixed_from_int(sy)); + time, wl_fixed_from_double(sx), wl_fixed_from_double(sy)); wl_pointer_send_frame(wlr_seat->pointer_state.focused_handle->pointer); }