send scroll events to swaybar blocks

This commit is contained in:
Peter Rice 2018-07-15 21:57:17 -04:00
parent 79a998849b
commit 14511da75d
1 changed files with 15 additions and 0 deletions

View File

@ -155,11 +155,26 @@ static void wl_pointer_button(void *data, struct wl_pointer *wl_pointer,
static void wl_pointer_axis(void *data, struct wl_pointer *wl_pointer,
uint32_t time, uint32_t axis, wl_fixed_t value) {
struct swaybar *bar = data;
struct swaybar_pointer *pointer = &bar->pointer;
struct swaybar_output *output = bar->pointer.current;
if (!sway_assert(output, "axis with no active output")) {
return;
}
struct swaybar_hotspot *hotspot;
wl_list_for_each(hotspot, &output->hotspots, link) {
double x = pointer->x * output->scale;
double y = pointer->y * output->scale;
if (x >= hotspot->x
&& y >= hotspot->y
&& x < hotspot->x + hotspot->width
&& y < hotspot->y + hotspot->height) {
hotspot->callback(output, pointer->x, pointer->y,
wl_axis_to_x11_button(axis, value), hotspot->data);
return;
}
}
double amt = wl_fixed_to_double(value);
if (amt == 0.0) {
return;