diff options
author | Brian Ashworth <bosrsf04@gmail.com> | 2019-01-10 12:43:10 -0500 |
---|---|---|
committer | Brian Ashworth <bosrsf04@gmail.com> | 2019-01-10 12:43:10 -0500 |
commit | 3d6440ec26f2b39c54fd03aa3a3c822a8a2bbc72 (patch) | |
tree | 05e5dddd092b3d3ba16166a3784a49923e9f3de2 /sway/commands/bar/bindsym.c | |
parent | 212baf2f75dca0279759ce6c27cfc68541b1b922 (diff) |
bar_cmd_bind: utilize mouse button helpers
This modifies `bar_cmd_bindsym` to use `get_mouse_bindsym` for parsing
mouse buttons. This also introduces `cmd_bar_bindcode`, which will use
`get_mouse_bindcode` for parsing mouse buttons. Like sway bindings, the
two commands are encapsulated in a single file with shared code.
This also modifies swaybar to operate off of event codes rather than x11
button numbers, which allows for any mouse button to be used.
This introduces two new IPC properties:
- For `get_bar_config`, `event_code` has been added to the `bindings`
section and will include to event code for the button. If the event code
can be mapped to a x11 button, `input_code` will still be the x11 button
number. Otherwise, `input_code` will be `0`.
- Likewise for `click_events`, `event` has been added and will include
the event code for the button clicked. If the event code can be mapped
to a x11 button, `button` will still be the x11 button number.
Otherwise, `button` will be `0`.
Diffstat (limited to 'sway/commands/bar/bindsym.c')
-rw-r--r-- | sway/commands/bar/bindsym.c | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/sway/commands/bar/bindsym.c b/sway/commands/bar/bindsym.c deleted file mode 100644 index e6d6220e..00000000 --- a/sway/commands/bar/bindsym.c +++ /dev/null @@ -1,68 +0,0 @@ -#include <stdlib.h> -#include <string.h> -#include <strings.h> -#include "sway/commands.h" -#include "sway/config.h" -#include "list.h" -#include "log.h" -#include "stringop.h" - -struct cmd_results *bar_cmd_bindsym(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "bar bindsym", EXPECTED_AT_LEAST, 2))) { - return error; - } - if (!config->current_bar) { - return cmd_results_new(CMD_FAILURE, "bar bindsym", "No bar defined."); - } - - struct bar_binding *binding = calloc(1, sizeof(struct bar_binding)); - if (!binding) { - return cmd_results_new(CMD_FAILURE, "bar bindsym", - "Unable to allocate bar binding"); - } - - binding->release = false; - if (strcmp("--release", argv[0]) == 0) { - binding->release = true; - argv++; - argc--; - } - - binding->button = 0; - if (strncasecmp(argv[0], "button", strlen("button")) == 0 && - strlen(argv[0]) == strlen("button0")) { - binding->button = argv[0][strlen("button")] - '0'; - } - if (binding->button < 1 || binding->button > 9) { - free_bar_binding(binding); - return cmd_results_new(CMD_FAILURE, "bar bindsym", - "Only button<1-9> is supported"); - } - - binding->command = join_args(argv + 1, argc - 1); - - list_t *bindings = config->current_bar->bindings; - bool overwritten = false; - for (int i = 0; i < bindings->length; i++) { - struct bar_binding *other = bindings->items[i]; - if (other->button == binding->button && - other->release == binding->release) { - overwritten = true; - bindings->items[i] = binding; - free_bar_binding(other); - wlr_log(WLR_DEBUG, "[bar %s] Updated binding for button%u%s", - config->current_bar->id, binding->button, - binding->release ? " (release)" : ""); - break; - } - } - if (!overwritten) { - list_add(bindings, binding); - wlr_log(WLR_DEBUG, "[bar %s] Added binding for button%u%s", - config->current_bar->id, binding->button, - binding->release ? " (release)" : ""); - } - - return cmd_results_new(CMD_SUCCESS, NULL, NULL); -} |