compositor-x11: Update axis notifications to follow protocol
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 <jadahl@gmail.com>
This commit is contained in:
parent
87b0735273
commit
62efe20cb9
@ -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;
|
||||
@ -660,32 +662,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));
|
||||
-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));
|
||||
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));
|
||||
-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));
|
||||
DEFAULT_AXIS_STEP_DISTANCE);
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user