Support axis source, axis discrete, frame and axis stop events
[jonas: only send focus wl_pointer.frame if resource supports it]
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
diff --git a/src/compositor-x11.c b/src/compositor-x11.c
index 93018da..b70c119 100644
--- a/src/compositor-x11.c
+++ b/src/compositor-x11.c
@@ -1085,6 +1085,8 @@
* steps. Therefore move the axis by some pixels every step. */
if (state) {
weston_event.value = -DEFAULT_AXIS_STEP_DISTANCE;
+ weston_event.discrete = -1;
+ weston_event.has_discrete = true;
weston_event.axis =
WL_POINTER_AXIS_VERTICAL_SCROLL;
notify_axis(&b->core_seat,
@@ -1095,6 +1097,8 @@
case 5:
if (state) {
weston_event.value = DEFAULT_AXIS_STEP_DISTANCE;
+ weston_event.discrete = 1;
+ weston_event.has_discrete = true;
weston_event.axis =
WL_POINTER_AXIS_VERTICAL_SCROLL;
notify_axis(&b->core_seat,
@@ -1105,6 +1109,8 @@
case 6:
if (state) {
weston_event.value = -DEFAULT_AXIS_STEP_DISTANCE;
+ weston_event.discrete = -1;
+ weston_event.has_discrete = true;
weston_event.axis =
WL_POINTER_AXIS_HORIZONTAL_SCROLL;
notify_axis(&b->core_seat,
@@ -1115,6 +1121,8 @@
case 7:
if (state) {
weston_event.value = DEFAULT_AXIS_STEP_DISTANCE;
+ weston_event.discrete = 1;
+ weston_event.has_discrete = true;
weston_event.axis =
WL_POINTER_AXIS_HORIZONTAL_SCROLL;
notify_axis(&b->core_seat,
@@ -1131,6 +1139,7 @@
weston_compositor_get_time(), button,
state ? WL_POINTER_BUTTON_STATE_PRESSED :
WL_POINTER_BUTTON_STATE_RELEASED);
+ notify_pointer_frame(&b->core_seat);
}
static void
@@ -1162,6 +1171,7 @@
notify_motion(&b->core_seat, weston_compositor_get_time(),
&motion_event);
+ notify_pointer_frame(&b->core_seat);
b->prev_x = x;
b->prev_y = y;