Axis events are in the same coordinate space as motion events, thus measured in pixels. To emulate axis events for discrete events move the axis by a number of pixels every step.
Signed-off-by: Jonas Ådahl <[email protected]> --- src/compositor-x11.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/compositor-x11.c b/src/compositor-x11.c index d5fa0c6..660a749 100644 --- a/src/compositor-x11.c +++ b/src/compositor-x11.c @@ -50,6 +50,8 @@ #include "compositor.h" #include "../shared/config-parser.h" +#define DEFAULT_AXIS_STEP_DISTANCE wl_fixed_from_int(10) + static char *output_name; static char *output_mode; static char *output_transform; @@ -718,32 +720,34 @@ x11_compositor_deliver_button_event(struct x11_compositor *c, button = BTN_RIGHT; break; case 4: + /* Axis are measured in pixels, but the xcb events are discrete + * steps. Therefore move the axis by some pixels every step. */ if (state) notify_axis(&c->core_seat, - weston_compositor_get_time(), - WL_POINTER_AXIS_VERTICAL_SCROLL, - wl_fixed_from_int(1)); + weston_compositor_get_time(), + WL_POINTER_AXIS_VERTICAL_SCROLL, + -DEFAULT_AXIS_STEP_DISTANCE); return; case 5: if (state) notify_axis(&c->core_seat, - weston_compositor_get_time(), - WL_POINTER_AXIS_VERTICAL_SCROLL, - wl_fixed_from_int(-1)); + weston_compositor_get_time(), + WL_POINTER_AXIS_VERTICAL_SCROLL, + DEFAULT_AXIS_STEP_DISTANCE); return; case 6: if (state) notify_axis(&c->core_seat, - weston_compositor_get_time(), - WL_POINTER_AXIS_HORIZONTAL_SCROLL, - wl_fixed_from_int(1)); + weston_compositor_get_time(), + WL_POINTER_AXIS_HORIZONTAL_SCROLL, + -DEFAULT_AXIS_STEP_DISTANCE); return; case 7: if (state) notify_axis(&c->core_seat, - weston_compositor_get_time(), - WL_POINTER_AXIS_HORIZONTAL_SCROLL, - wl_fixed_from_int(-1)); + weston_compositor_get_time(), + WL_POINTER_AXIS_HORIZONTAL_SCROLL, + DEFAULT_AXIS_STEP_DISTANCE); return; } -- 1.7.9.5 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
