Fix click behaviour

By the time seatop_allows_events was called, seatop_impl was already
NULL, causing the function to always return false. This means a press
event was sent to clients without a corresponding release event.

This patch moves the call to seatop_finish to after the
seatop_allows_events check.
This commit is contained in:
Ryan Dwyer 2019-03-11 18:11:01 +10:00 committed by emersion
parent d16845d5f0
commit 783b3d6b37

View file

@ -605,9 +605,6 @@ void dispatch_cursor_button(struct sway_cursor *cursor,
// Handle existing seat operation // Handle existing seat operation
if (seat_doing_seatop(seat)) { if (seat_doing_seatop(seat)) {
if (button == seat->seatop_button && state == WLR_BUTTON_RELEASED) {
seatop_finish(seat, time_msec);
}
if (state == WLR_BUTTON_PRESSED) { if (state == WLR_BUTTON_PRESSED) {
state_add_button(cursor, button); state_add_button(cursor, button);
} else { } else {
@ -616,6 +613,9 @@ void dispatch_cursor_button(struct sway_cursor *cursor,
if (seatop_allows_events(seat)) { if (seatop_allows_events(seat)) {
seat_pointer_notify_button(seat, time_msec, button, state); seat_pointer_notify_button(seat, time_msec, button, state);
} }
if (button == seat->seatop_button && state == WLR_BUTTON_RELEASED) {
seatop_finish(seat, time_msec);
}
return; return;
} }