diff --git a/include/client/window.h b/include/client/window.h index e07e3509..296dd9ed 100644 --- a/include/client/window.h +++ b/include/client/window.h @@ -38,8 +38,7 @@ struct pointer_input { int last_x; int last_y; - void (*notify_button)(struct window *window, int x, int y, uint32_t button); - + void (*notify_button)(struct window *window, int x, int y, uint32_t button, uint32_t state_w); void (*notify_scroll)(struct window *window, enum scroll_direction direction); }; diff --git a/swaybar/bar.c b/swaybar/bar.c index 82e136e4..9009e1ff 100644 --- a/swaybar/bar.c +++ b/swaybar/bar.c @@ -58,8 +58,12 @@ struct output *new_output(const char *name) { return output; } -static void mouse_button_notify(struct window *window, int x, int y, uint32_t button) { - sway_log(L_DEBUG, "Mouse button %d clicked at %d %d\n", button, x, y); +static void mouse_button_notify(struct window *window, int x, int y, + uint32_t button, uint32_t state_w) { + sway_log(L_DEBUG, "Mouse button %d clicked at %d %d %d\n", button, x, y, state_w); + if (!state_w) { + return; + } struct output *clicked_output = NULL; for (int i = 0; i < swaybar.outputs->length; i++) { diff --git a/wayland/window.c b/wayland/window.c index dfa6a997..9ebee2ba 100644 --- a/wayland/window.c +++ b/wayland/window.c @@ -42,7 +42,7 @@ static void pointer_handle_button(void *data, struct wl_pointer *pointer, uint32 struct pointer_input *input = &window->pointer_input; if (window->pointer_input.notify_button) { - window->pointer_input.notify_button(window, input->last_x, input->last_y, button); + window->pointer_input.notify_button(window, input->last_x, input->last_y, button, state_w); } }