diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-10-04 20:57:03 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-10-04 20:57:03 +1000 |
commit | 4feedbf7cf5e90574953aea81f7a6583135246c4 (patch) | |
tree | 0d4a9d77e5c3112cc9ba9494dd496a33beab1da2 | |
parent | Merge pull request #2759 from minus7/fix-view-container-null (diff) | |
download | sway-4feedbf7cf5e90574953aea81f7a6583135246c4.tar.gz sway-4feedbf7cf5e90574953aea81f7a6583135246c4.tar.zst sway-4feedbf7cf5e90574953aea81f7a6583135246c4.zip |
Ignore unrelated cursor buttons while doing seat operations
* Click and hold a scrollbar
* Drag the cursor onto another surface
* While still holding the original button, press and release another
cursor button
* Things get weird
There's two ways to fix this. Either cancel the seat operation and do
the other click, or continue the seat operation and ignore the other
click. I opted for the latter (ignoring the click) because it's easier
to implement, and I suspect a second click during a seat operation is
probably unintentional anyway.
-rw-r--r-- | sway/input/cursor.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/sway/input/cursor.c b/sway/input/cursor.c index 3c62acb9..331c6c7e 100644 --- a/sway/input/cursor.c +++ b/sway/input/cursor.c | |||
@@ -754,11 +754,12 @@ void dispatch_cursor_button(struct sway_cursor *cursor, | |||
754 | } | 754 | } |
755 | struct sway_seat *seat = cursor->seat; | 755 | struct sway_seat *seat = cursor->seat; |
756 | 756 | ||
757 | // Handle ending seat operation | 757 | // Handle existing seat operation |
758 | if (cursor->seat->operation != OP_NONE && | 758 | if (cursor->seat->operation != OP_NONE) { |
759 | button == cursor->seat->op_button && state == WLR_BUTTON_RELEASED) { | 759 | if (button == cursor->seat->op_button && state == WLR_BUTTON_RELEASED) { |
760 | seat_end_mouse_operation(seat); | 760 | seat_end_mouse_operation(seat); |
761 | seat_pointer_notify_button(seat, time_msec, button, state); | 761 | seat_pointer_notify_button(seat, time_msec, button, state); |
762 | } | ||
762 | return; | 763 | return; |
763 | } | 764 | } |
764 | 765 | ||