summaryrefslogtreecommitdiffstats
path: root/sway/handlers.c
diff options
context:
space:
mode:
authorLibravatar Mikkel Oscar Lyderik <mikkeloscar@gmail.com>2016-01-05 23:18:59 +0100
committerLibravatar Mikkel Oscar Lyderik <mikkeloscar@gmail.com>2016-01-05 23:18:59 +0100
commit843e2ad2c140288733110691f7dc8252fbe4dc16 (patch)
tree3244491ed6cc45666e0599f8cbb3099864f627eb /sway/handlers.c
parentAdd modifier key to bar_config json (diff)
downloadsway-843e2ad2c140288733110691f7dc8252fbe4dc16.tar.gz
sway-843e2ad2c140288733110691f7dc8252fbe4dc16.tar.zst
sway-843e2ad2c140288733110691f7dc8252fbe4dc16.zip
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`.
Diffstat (limited to 'sway/handlers.c')
-rw-r--r--sway/handlers.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/sway/handlers.c b/sway/handlers.c
index 4cbec0ab..db3a0206 100644
--- a/sway/handlers.c
+++ b/sway/handlers.c
@@ -390,18 +390,17 @@ static bool handle_key(wlc_handle view, uint32_t time, const struct wlc_modifier
390 } 390 }
391 391
392 // handle bar modifiers pressed/released 392 // handle bar modifiers pressed/released
393 struct bar_config *bar; 393 uint32_t modifier;
394 for (i = 0; i < config->bars->length; ++i) { 394 for (i = 0; i < config->active_bar_modifiers->length; ++i) {
395 bar = config->bars->items[i]; 395 modifier = *(uint32_t *)config->active_bar_modifiers->items[i];
396 if (strcmp(bar->mode, "hide") == 0 && strcmp(bar->hidden_state, "hide") == 0) { 396
397 switch (modifier_state_changed(modifiers->mods, bar->modifier)) { 397 switch (modifier_state_changed(modifiers->mods, modifier)) {
398 case MOD_STATE_PRESSED: 398 case MOD_STATE_PRESSED:
399 ipc_event_modifier(bar->modifier, "pressed"); 399 ipc_event_modifier(modifier, "pressed");
400 break; 400 break;
401 case MOD_STATE_RELEASED: 401 case MOD_STATE_RELEASED:
402 ipc_event_modifier(bar->modifier, "released"); 402 ipc_event_modifier(modifier, "released");
403 break; 403 break;
404 }
405 } 404 }
406 } 405 }
407 // update modifiers state 406 // update modifiers state