input/cursor: do not hide when buttons are pressed

This just adds a small quality of life improvement to the cursor hiding
functionality. The cursor will no longer be hidden unless all buttons
are released.
This commit is contained in:
Brian Ashworth 2019-08-05 03:23:16 -04:00 committed by Drew DeVault
parent a9e31d925f
commit 56b5ad777c

View file

@ -187,6 +187,11 @@ static int hide_notify(void *data) {
} }
int cursor_get_timeout(struct sway_cursor *cursor) { int cursor_get_timeout(struct sway_cursor *cursor) {
if (cursor->pressed_button_count > 0) {
// Do not hide cursor unless all buttons are released
return 0;
}
struct seat_config *sc = seat_get_config(cursor->seat); struct seat_config *sc = seat_get_config(cursor->seat);
if (!sc) { if (!sc) {
sc = seat_get_config_by_name("*"); sc = seat_get_config_by_name("*");
@ -299,7 +304,6 @@ void dispatch_cursor_button(struct sway_cursor *cursor,
static void handle_cursor_button(struct wl_listener *listener, void *data) { static void handle_cursor_button(struct wl_listener *listener, void *data) {
struct sway_cursor *cursor = wl_container_of(listener, cursor, button); struct sway_cursor *cursor = wl_container_of(listener, cursor, button);
struct wlr_event_pointer_button *event = data; struct wlr_event_pointer_button *event = data;
cursor_handle_activity(cursor);
if (event->state == WLR_BUTTON_PRESSED) { if (event->state == WLR_BUTTON_PRESSED) {
cursor->pressed_button_count++; cursor->pressed_button_count++;
@ -311,6 +315,7 @@ static void handle_cursor_button(struct wl_listener *listener, void *data) {
} }
} }
cursor_handle_activity(cursor);
dispatch_cursor_button(cursor, event->device, dispatch_cursor_button(cursor, event->device,
event->time_msec, event->button, event->state); event->time_msec, event->button, event->state);
transaction_commit_dirty(); transaction_commit_dirty();