@ -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 ( ) ;