mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-04-04 07:15:29 -04:00
input: rework mouse button/motion handling
Store a list of currently pressed buttons, and which surface they belong to (i.e. which surface that received the press). Then, in motion events (with a button pressed, aka drag operations), send the event to the “original” surface (that received the press). Also send release events to the originating surface. This means a surface receiving a press will always receive a corresponding release. And no one will receive a release event without a corresponding press event. Motion events with a button pressed will *always* use the *first* button that was pressed. I.e. if you press a button, start dragging, and then press another button, we keep generating motion events for the *first* button.
This commit is contained in:
parent
a1a0b489ee
commit
ff96ce1e91
4 changed files with 145 additions and 115 deletions
|
|
@ -138,6 +138,8 @@ seat_destroy(struct seat *seat)
|
|||
if (seat == NULL)
|
||||
return;
|
||||
|
||||
tll_free(seat->mouse.buttons);
|
||||
|
||||
tll_foreach(seat->kbd.bindings.key, it)
|
||||
tll_free(it->item.bind.key_codes);
|
||||
tll_free(seat->kbd.bindings.key);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue