sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit d0fe721fbbfbbdced91b94889c863c68c33c8125
parent f4cda5157e40470da7a0e41685ff04a0d76e8be5
Author: David Rosca <nowrep@gmail.com>
Date:   Thu,  5 Aug 2021 06:26:34 +0200

seatop_down: Change type of sx, sy to double in begin_seatop_down

Losing the precision resulted in wlr_cursor and wlr_seat::pointer_state
getting out of sync during pointer motion in seatop_down.
Since the difference was always under 1 px, it was practically
impossible to notice in normal use.

But because of being out of sync, cursor_rebase would always end up
incorrectly calling wlr_seat_pointer_notify_motion from
seatop_default_begin (on releasing mouse button) which broke cursor
locking.

See #5405
Closes #4632

Diffstat:
Minclude/sway/input/seat.h | 2+-
Msway/input/seatop_down.c | 2+-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/sway/input/seat.h b/include/sway/input/seat.h @@ -239,7 +239,7 @@ enum wlr_edges find_resize_edge(struct sway_container *cont, void seatop_begin_default(struct sway_seat *seat); void seatop_begin_down(struct sway_seat *seat, struct sway_container *con, - uint32_t time_msec, int sx, int sy); + uint32_t time_msec, double sx, double sy); void seatop_begin_move_floating(struct sway_seat *seat, struct sway_container *con); diff --git a/sway/input/seatop_down.c b/sway/input/seatop_down.c @@ -90,7 +90,7 @@ static const struct sway_seatop_impl seatop_impl = { }; void seatop_begin_down(struct sway_seat *seat, struct sway_container *con, - uint32_t time_msec, int sx, int sy) { + uint32_t time_msec, double sx, double sy) { seatop_end(seat); struct seatop_down_event *e =