aboutsummaryrefslogtreecommitdiff
path: root/sway/input/seat.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/input/seat.c')
-rw-r--r--sway/input/seat.c11
1 files changed, 7 insertions, 4 deletions
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);
}