summaryrefslogtreecommitdiff
path: root/sway/handlers.c
diff options
context:
space:
mode:
authorDrew DeVault <[email protected]>2016-01-06 07:26:54 -0500
committerDrew DeVault <[email protected]>2016-01-06 07:26:54 -0500
commit8f5de70c93b2afaab0dd7d384c58ff3d3007193c (patch)
tree4826eca48ec5d4d2b827477c74de7d500f39f0fa /sway/handlers.c
parent18f81850114af1ca969387e0715d9284e77b0148 (diff)
parent843e2ad2c140288733110691f7dc8252fbe4dc16 (diff)
Merge pull request #434 from mikkeloscar/detect-modifier
Send IPC modifier event on bar_modifier up/down
Diffstat (limited to 'sway/handlers.c')
-rw-r--r--sway/handlers.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/sway/handlers.c b/sway/handlers.c
index 3cc5cf3e..470f3c95 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
@@ -391,6 +392,23 @@ static bool handle_key(wlc_handle view, uint32_t time, const struct wlc_modifier
}
}
}
+
+ // handle bar modifiers pressed/released
+ 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
+ modifiers_state_update(modifiers->mods);
return EVENT_PASSTHROUGH;
}