mirror of
https://github.com/swaywm/sway.git
synced 2025-11-03 09:01:43 -05:00
bindings: allow unlocked and locked bindings
This changes the behavior of bindings to make the `BINDING_LOCKED` flag conflicting, which will allow for both unlocked and locked bindings. If there are two matching bindings and one has `--locked` and the other does not, the one with `--locked` will be preferred when locked and the one without will be preferred when unlocked. If there are two matching bindings and one has both a matching `--input-device=<input>` and `--locked` and the other has neither, the former will be preferred for both unlocked and locked. This also refactors `get_active_binding` in `sway/input/keyboard.c` to make it easier to read.
This commit is contained in:
parent
2c6a10c4ba
commit
6afb392823
4 changed files with 67 additions and 26 deletions
|
|
@ -49,6 +49,10 @@ static bool binding_switch_compare(struct sway_switch_binding *binding_a,
|
|||
if (binding_a->state != binding_b->state) {
|
||||
return false;
|
||||
}
|
||||
if ((binding_a->flags & BINDING_LOCKED) !=
|
||||
(binding_b->flags & BINDING_LOCKED)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -68,7 +72,7 @@ static bool binding_key_compare(struct sway_binding *binding_a,
|
|||
}
|
||||
|
||||
uint32_t conflict_generating_flags = BINDING_RELEASE | BINDING_BORDER
|
||||
| BINDING_CONTENTS | BINDING_TITLEBAR;
|
||||
| BINDING_CONTENTS | BINDING_TITLEBAR | BINDING_LOCKED;
|
||||
if ((binding_a->flags & conflict_generating_flags) !=
|
||||
(binding_b->flags & conflict_generating_flags)) {
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue