When an axis (scroll) event results in a key binding function
being executed, eat the scroll event so the underlying window
doesn't receive it.
Thanks to Scott Moreau for helping me solve this.
}
}
-WL_EXPORT void
+WL_EXPORT int
weston_compositor_run_axis_binding(struct weston_compositor *compositor,
struct weston_seat *seat,
uint32_t time, uint32_t axis,
if (b->axis == axis && b->modifier == seat->modifier_state) {
weston_axis_binding_handler_t handler = b->handler;
handler(&seat->seat, time, axis, value, b->data);
+ return 1;
}
}
+
+ return 0;
}
WL_EXPORT int
weston_compositor_wake(compositor);
- if (value)
- weston_compositor_run_axis_binding(compositor, seat,
- time, axis, value);
- else
+ if (!value)
+ return;
+
+ if (weston_compositor_run_axis_binding(compositor, seat,
+ time, axis, value))
return;
if (pointer->focus_resource)
struct weston_seat *seat, uint32_t time,
uint32_t button,
enum wl_pointer_button_state value);
-void
+int
weston_compositor_run_axis_binding(struct weston_compositor *compositor,
struct weston_seat *seat, uint32_t time,
uint32_t axis, int32_t value);