mirror of
https://github.com/labwc/labwc.git
synced 2025-11-04 13:30:07 -05:00
src/cursor.c: Ensure we send a release event for out-of-surface scrolling
This commit is contained in:
parent
81810db3b6
commit
b24b9d2d23
1 changed files with 13 additions and 4 deletions
17
src/cursor.c
17
src/cursor.c
|
|
@ -716,9 +716,18 @@ cursor_button(struct wl_listener *listener, void *data)
|
||||||
|
|
||||||
/* handle _release_ */
|
/* handle _release_ */
|
||||||
if (event->state == WLR_BUTTON_RELEASED) {
|
if (event->state == WLR_BUTTON_RELEASED) {
|
||||||
server->seat.pressed.view = NULL;
|
seat->pressed.view = NULL;
|
||||||
server->seat.pressed.surface = NULL;
|
if (seat->pressed.surface && seat->pressed.surface != surface) {
|
||||||
|
/*
|
||||||
|
* Button released but originally pressed over a different surface.
|
||||||
|
* Just send the release event to the still focused surface.
|
||||||
|
*/
|
||||||
|
wlr_seat_pointer_notify_button(seat->seat, event->time_msec,
|
||||||
|
event->button, event->state);
|
||||||
|
seat->pressed.surface = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
seat->pressed.surface = NULL;
|
||||||
if (server->input_mode == LAB_INPUT_STATE_MENU) {
|
if (server->input_mode == LAB_INPUT_STATE_MENU) {
|
||||||
if (close_menu) {
|
if (close_menu) {
|
||||||
if (server->menu_current) {
|
if (server->menu_current) {
|
||||||
|
|
@ -752,7 +761,7 @@ cursor_button(struct wl_listener *listener, void *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handle _press */
|
/* Handle _press */
|
||||||
if (view_area == LAB_SSD_CLIENT) {
|
if (surface) {
|
||||||
server->seat.pressed.view = view;
|
server->seat.pressed.view = view;
|
||||||
server->seat.pressed.surface = surface;
|
server->seat.pressed.surface = surface;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue