diff --git a/rootston/cursor.c b/rootston/cursor.c index 0aaff1320..4ec600e19 100644 --- a/rootston/cursor.c +++ b/rootston/cursor.c @@ -381,7 +381,7 @@ void roots_cursor_handle_motion_absolute(struct roots_cursor *cursor, if (cursor->active_constraint && !pixman_region32_contains_point(&cursor->confine, - lx - view->x, ly - view->y, NULL)) { + floor(lx - view->x), floor(ly - view->y), NULL)) { return; } } @@ -501,7 +501,7 @@ void roots_cursor_handle_tool_axis(struct roots_cursor *cursor, if (cursor->active_constraint && !pixman_region32_contains_point(&cursor->confine, - lx - view->x, ly - view->y, NULL)) { + floor(lx - view->x), floor(ly - view->y), NULL)) { return; } } @@ -602,7 +602,7 @@ void roots_cursor_constrain(struct roots_cursor *cursor, pixman_region32_t *region = &constraint->region; - if (!pixman_region32_contains_point(region, sx, sy, NULL)) { + if (!pixman_region32_contains_point(region, floor(sx), floor(sy), NULL)) { // Warp into region if possible int nboxes; pixman_box32_t *boxes = pixman_region32_rectangles(region, &nboxes); diff --git a/types/wlr_surface.c b/types/wlr_surface.c index 773de4601..408f38d11 100644 --- a/types/wlr_surface.c +++ b/types/wlr_surface.c @@ -943,7 +943,7 @@ bool wlr_surface_point_accepts_input(struct wlr_surface *surface, double sx, double sy) { return sx >= 0 && sx < surface->current.width && sy >= 0 && sy < surface->current.height && - pixman_region32_contains_point(&surface->current.input, sx, sy, NULL); + pixman_region32_contains_point(&surface->current.input, floor(sx), floor(sy), NULL); } struct wlr_surface *wlr_surface_surface_at(struct wlr_surface *surface, diff --git a/util/region.c b/util/region.c index 76df71f36..61f9c7c77 100644 --- a/util/region.c +++ b/util/region.c @@ -241,7 +241,7 @@ static void region_confine(pixman_region32_t *region, double x1, double y1, doub bool wlr_region_confine(pixman_region32_t *region, double x1, double y1, double x2, double y2, double *x2_out, double *y2_out) { pixman_box32_t box; - if (pixman_region32_contains_point(region, x1, y1, &box)) { + if (pixman_region32_contains_point(region, floor(x1), floor(y1), &box)) { region_confine(region, x1, y1, x2, y2, x2_out, y2_out, box); return true; } else {