[PATCH weston 3/8] compositor-x11: Update axis notifications to follow protocol
Jonas Ådahl
jadahl at gmail.com
Thu Sep 27 09:40:41 PDT 2012
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 at gmail.com>
---
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
More information about the wayland-devel
mailing list