mirror of
https://github.com/swaywm/sway.git
synced 2025-11-19 06:59:52 -05:00
Only send modifier event once for active modifiers
This makes sure that a modifier event is only sent for active bar modifiers, and that it is only sent once for each of those modifiers. An active bar modifier is a modifier defined for a bar with `mode hide` and `hidden_state hide`.
This commit is contained in:
parent
a8402035e9
commit
843e2ad2c1
4 changed files with 54 additions and 12 deletions
|
|
@ -390,18 +390,17 @@ static bool handle_key(wlc_handle view, uint32_t time, const struct wlc_modifier
|
|||
}
|
||||
|
||||
// handle bar modifiers pressed/released
|
||||
struct bar_config *bar;
|
||||
for (i = 0; i < config->bars->length; ++i) {
|
||||
bar = config->bars->items[i];
|
||||
if (strcmp(bar->mode, "hide") == 0 && strcmp(bar->hidden_state, "hide") == 0) {
|
||||
switch (modifier_state_changed(modifiers->mods, bar->modifier)) {
|
||||
case MOD_STATE_PRESSED:
|
||||
ipc_event_modifier(bar->modifier, "pressed");
|
||||
break;
|
||||
case MOD_STATE_RELEASED:
|
||||
ipc_event_modifier(bar->modifier, "released");
|
||||
break;
|
||||
}
|
||||
uint32_t modifier;
|
||||
for (i = 0; i < config->active_bar_modifiers->length; ++i) {
|
||||
modifier = *(uint32_t *)config->active_bar_modifiers->items[i];
|
||||
|
||||
switch (modifier_state_changed(modifiers->mods, modifier)) {
|
||||
case MOD_STATE_PRESSED:
|
||||
ipc_event_modifier(modifier, "pressed");
|
||||
break;
|
||||
case MOD_STATE_RELEASED:
|
||||
ipc_event_modifier(modifier, "released");
|
||||
break;
|
||||
}
|
||||
}
|
||||
// update modifiers state
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue