From 024c3e4428ad4291a83d8fb0ccfbbd068f703542 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 15 Nov 2022 14:48:28 +0100 Subject: input/seat: locally compute drag icon offset References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3861 --- sway/input/seat.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'sway/input/seat.c') diff --git a/sway/input/seat.c b/sway/input/seat.c index 43b20779..c263eb82 100644 --- a/sway/input/seat.c +++ b/sway/input/seat.c @@ -382,8 +382,8 @@ void drag_icon_update_position(struct sway_drag_icon *icon) { case WLR_DRAG_GRAB_KEYBOARD: return; case WLR_DRAG_GRAB_KEYBOARD_POINTER: - icon->x = cursor->x + wlr_icon->surface->sx; - icon->y = cursor->y + wlr_icon->surface->sy; + icon->x = cursor->x + icon->dx; + icon->y = cursor->y + icon->dy; break; case WLR_DRAG_GRAB_KEYBOARD_TOUCH:; struct wlr_touch_point *point = @@ -391,8 +391,8 @@ void drag_icon_update_position(struct sway_drag_icon *icon) { if (point == NULL) { return; } - icon->x = seat->touch_x + wlr_icon->surface->sx; - icon->y = seat->touch_y + wlr_icon->surface->sy; + icon->x = seat->touch_x + icon->dx; + icon->y = seat->touch_y + icon->dy; } drag_icon_damage_whole(icon); @@ -402,6 +402,9 @@ static void drag_icon_handle_surface_commit(struct wl_listener *listener, void *data) { struct sway_drag_icon *icon = wl_container_of(listener, icon, surface_commit); + struct wlr_drag_icon *wlr_icon = icon->wlr_drag_icon; + icon->dx += wlr_icon->surface->current.dx; + icon->dy += wlr_icon->surface->current.dy; drag_icon_update_position(icon); } -- cgit v1.2.3-54-g00ecf