diff options
Diffstat (limited to 'rootston/cursor.c')
| -rw-r--r-- | rootston/cursor.c | 45 | 
1 files changed, 19 insertions, 26 deletions
| diff --git a/rootston/cursor.c b/rootston/cursor.c index 717a3da8..87391e29 100644 --- a/rootston/cursor.c +++ b/rootston/cursor.c @@ -244,40 +244,33 @@ static void roots_cursor_press_button(struct roots_cursor *cursor,  			roots_seat_begin_rotate(seat, view);  			break;  		} -		return; -	} +	} else { -	if (view && !surface) { -		if (cursor->pointer_view) { -			seat_view_deco_button(cursor->pointer_view, sx, sy, button, state); +		if (view && !surface) { +			if (cursor->pointer_view) { +				seat_view_deco_button(cursor->pointer_view, sx, sy, button, state); +			}  		} -	} -	if (state == WLR_BUTTON_RELEASED && -			cursor->mode != ROOTS_CURSOR_PASSTHROUGH) { -		cursor->mode = ROOTS_CURSOR_PASSTHROUGH; -		if (seat->seat->pointer_state.button_count == 0) { -			return; +		if (state == WLR_BUTTON_RELEASED && +				cursor->mode != ROOTS_CURSOR_PASSTHROUGH) { +			cursor->mode = ROOTS_CURSOR_PASSTHROUGH;  		} -	} -	if ((view && surface) || -		(state == WLR_BUTTON_RELEASED && -		 seat->seat->pointer_state.button_count != 0)) { -		if (!is_touch) { -			wlr_seat_pointer_notify_button(seat->seat, time, button, state); +		switch (state) { +		case WLR_BUTTON_RELEASED: +			if (!is_touch) { +				roots_cursor_update_position(cursor, time); +			} +			break; +		case WLR_BUTTON_PRESSED: +			roots_seat_set_focus(seat, view); +			break;  		}  	} -	switch (state) { -	case WLR_BUTTON_RELEASED: -		if (!is_touch) { -			roots_cursor_update_position(cursor, time); -		} -		break; -	case WLR_BUTTON_PRESSED: -		roots_seat_set_focus(seat, view); -		break; +	if (!is_touch) { +		wlr_seat_pointer_notify_button(seat->seat, time, button, state);  	}  } | 
