diff options
author | Brian Ashworth <[email protected]> | 2019-01-10 12:43:10 -0500 |
---|---|---|
committer | Brian Ashworth <[email protected]> | 2019-01-10 12:43:10 -0500 |
commit | 3d6440ec26f2b39c54fd03aa3a3c822a8a2bbc72 (patch) | |
tree | 05e5dddd092b3d3ba16166a3784a49923e9f3de2 /swaybar/render.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 'swaybar/render.c')
-rw-r--r-- | swaybar/render.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/swaybar/render.c b/swaybar/render.c index 7cbcea07..670e8e74 100644 --- a/swaybar/render.c +++ b/swaybar/render.c @@ -1,5 +1,6 @@ #define _POSIX_C_SOURCE 200809L #include <assert.h> +#include <linux/input-event-codes.h> #include <limits.h> #include <stdlib.h> #include <stdint.h> @@ -126,13 +127,13 @@ static void render_sharp_line(cairo_t *cairo, uint32_t color, } } -static enum hotspot_event_handling block_hotspot_callback(struct swaybar_output *output, - struct swaybar_hotspot *hotspot, - int x, int y, enum x11_button button, void *data) { +static enum hotspot_event_handling block_hotspot_callback( + struct swaybar_output *output, struct swaybar_hotspot *hotspot, + int x, int y, uint32_t button, void *data) { struct i3bar_block *block = data; struct status_line *status = output->bar->status; - return i3bar_block_send_click(status, block, x, y, x - hotspot->x, y - hotspot->y, - hotspot->width, hotspot->height, button); + return i3bar_block_send_click(status, block, x, y, x - hotspot->x, + y - hotspot->y, hotspot->width, hotspot->height, button); } static void i3bar_block_unref_callback(void *data) { @@ -360,10 +361,10 @@ static uint32_t render_binding_mode_indicator(cairo_t *cairo, return output->height; } -static enum hotspot_event_handling workspace_hotspot_callback(struct swaybar_output *output, - struct swaybar_hotspot *hotspot, - int x, int y, enum x11_button button, void *data) { - if (button != LEFT) { +static enum hotspot_event_handling workspace_hotspot_callback( + struct swaybar_output *output, struct swaybar_hotspot *hotspot, + int x, int y, uint32_t button, void *data) { + if (button != BTN_LEFT) { return HOTSPOT_PROCESS; } ipc_send_workspace_command(output->bar, (const char *)data); |