Fix #1129 and remove sx, sy from wlr_drag_icon
sx, sy used to store the buffer offset of the drag surface which was then be added (by rootston) to the drag icon position. Buffer offsets are handled already in surface_intersect_output (output.c) so they were added twice for dnd surfaces.
This commit is contained in:
parent
8898f3199a
commit
f6168c2afe
|
@ -93,8 +93,6 @@ struct wlr_drag_icon {
|
|||
bool is_pointer;
|
||||
int32_t touch_id;
|
||||
|
||||
int32_t sx, sy;
|
||||
|
||||
struct {
|
||||
struct wl_signal map;
|
||||
struct wl_signal unmap;
|
||||
|
|
|
@ -502,16 +502,16 @@ void roots_drag_icon_update_position(struct roots_drag_icon *icon) {
|
|||
struct roots_seat *seat = icon->seat;
|
||||
struct wlr_cursor *cursor = seat->cursor->cursor;
|
||||
if (wlr_icon->is_pointer) {
|
||||
icon->x = cursor->x + wlr_icon->sx;
|
||||
icon->y = cursor->y + wlr_icon->sy;
|
||||
icon->x = cursor->x;
|
||||
icon->y = cursor->y;
|
||||
} else {
|
||||
struct wlr_touch_point *point =
|
||||
wlr_seat_touch_get_point(seat->seat, wlr_icon->touch_id);
|
||||
if (point == NULL) {
|
||||
return;
|
||||
}
|
||||
icon->x = seat->touch_x + wlr_icon->sx;
|
||||
icon->y = seat->touch_y + wlr_icon->sy;
|
||||
icon->x = seat->touch_x;
|
||||
icon->y = seat->touch_y;
|
||||
}
|
||||
|
||||
roots_drag_icon_damage_whole(icon);
|
||||
|
|
|
@ -345,9 +345,6 @@ static void drag_icon_surface_role_commit(struct wlr_surface *surface) {
|
|||
return;
|
||||
}
|
||||
|
||||
icon->sx += icon->surface->current.dx;
|
||||
icon->sy += icon->surface->current.dy;
|
||||
|
||||
drag_icon_set_mapped(icon, wlr_surface_has_buffer(surface));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue