diff options
Diffstat (limited to 'swaybar/input.c')
-rw-r--r-- | swaybar/input.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/swaybar/input.c b/swaybar/input.c index c8c8f0d4..f12eed79 100644 --- a/swaybar/input.c +++ b/swaybar/input.c | |||
@@ -166,14 +166,13 @@ static void wl_pointer_button(void *data, struct wl_pointer *wl_pointer, | |||
166 | return; | 166 | return; |
167 | } | 167 | } |
168 | 168 | ||
169 | if (check_bindings(seat->bar, button, state)) { | 169 | if (state == WL_POINTER_BUTTON_STATE_PRESSED) { |
170 | return; | 170 | if (process_hotspots(output, pointer->x, pointer->y, button)) { |
171 | return; | ||
172 | } | ||
171 | } | 173 | } |
172 | 174 | ||
173 | if (state != WL_POINTER_BUTTON_STATE_PRESSED) { | 175 | check_bindings(seat->bar, button, state); |
174 | return; | ||
175 | } | ||
176 | process_hotspots(output, pointer->x, pointer->y, button); | ||
177 | } | 176 | } |
178 | 177 | ||
179 | static void workspace_next(struct swaybar *bar, struct swaybar_output *output, | 178 | static void workspace_next(struct swaybar *bar, struct swaybar_output *output, |
@@ -222,15 +221,14 @@ static void workspace_next(struct swaybar *bar, struct swaybar_output *output, | |||
222 | static void process_discrete_scroll(struct swaybar_seat *seat, | 221 | static void process_discrete_scroll(struct swaybar_seat *seat, |
223 | struct swaybar_output *output, struct swaybar_pointer *pointer, | 222 | struct swaybar_output *output, struct swaybar_pointer *pointer, |
224 | uint32_t axis, wl_fixed_t value) { | 223 | uint32_t axis, wl_fixed_t value) { |
225 | // If there is a button press binding, execute it, skip default behavior, | ||
226 | // and check button release bindings | ||
227 | uint32_t button = wl_axis_to_button(axis, value); | 224 | uint32_t button = wl_axis_to_button(axis, value); |
228 | if (check_bindings(seat->bar, button, WL_POINTER_BUTTON_STATE_PRESSED)) { | 225 | if (process_hotspots(output, pointer->x, pointer->y, button)) { |
229 | check_bindings(seat->bar, button, WL_POINTER_BUTTON_STATE_RELEASED); | ||
230 | return; | 226 | return; |
231 | } | 227 | } |
232 | 228 | ||
233 | if (process_hotspots(output, pointer->x, pointer->y, button)) { | 229 | // If there is a button press binding, execute it, and check button release bindings |
230 | if (check_bindings(seat->bar, button, WL_POINTER_BUTTON_STATE_PRESSED)) { | ||
231 | check_bindings(seat->bar, button, WL_POINTER_BUTTON_STATE_RELEASED); | ||
234 | return; | 232 | return; |
235 | } | 233 | } |
236 | 234 | ||