summaryrefslogtreecommitdiff
path: root/sway/handlers.c
diff options
context:
space:
mode:
authorMikkel Oscar Lyderik <[email protected]>2016-01-05 02:20:20 +0100
committerMikkel Oscar Lyderik <[email protected]>2016-01-05 02:25:56 +0100
commitc20c63b677c03b17441f0d135b5325e23d65f38d (patch)
treee16dde2339d7cb1079a83842c53324ac91fed600 /sway/handlers.c
parent7727c9efbc105269befe06a5bb12d2019c52515e (diff)
Send IPC modifier event on bar_modifier up/down
Detects when a bar modifier key is pressed/released and sends a modifier IPC event to any listeners (usually swaybars). This way a swaybar can listen on the modifier event and hide/show the bar accordingly (not implemented yet) The modifier event looks like this: { "change": "pressed", // or released "modifier": "Mod4" }
Diffstat (limited to 'sway/handlers.c')
-rw-r--r--sway/handlers.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/sway/handlers.c b/sway/handlers.c
index 5e523468..4cbec0ab 100644
--- a/sway/handlers.c
+++ b/sway/handlers.c
@@ -20,6 +20,7 @@
#include "resize.h"
#include "extensions.h"
#include "criteria.h"
+#include "ipc-server.h"
// Event should be sent to client
#define EVENT_PASSTHROUGH false
@@ -392,13 +393,15 @@ static bool handle_key(wlc_handle view, uint32_t time, const struct wlc_modifier
struct bar_config *bar;
for (i = 0; i < config->bars->length; ++i) {
bar = config->bars->items[i];
- switch (modifier_state_changed(modifiers->mods, bar->modifier)) {
- case MOD_STATE_PRESSED:
- sway_log(L_INFO, "pressed!!!");
- break;
- case MOD_STATE_RELEASED:
- sway_log(L_INFO, "released!!!");
- break;
+ 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;
+ }
}
}
// update modifiers state