diff options
-rw-r--r-- | src/lib/ecore_drm/ecore_drm_evdev.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/lib/ecore_drm/ecore_drm_evdev.c b/src/lib/ecore_drm/ecore_drm_evdev.c index b389e5c86d..3b851b5566 100644 --- a/src/lib/ecore_drm/ecore_drm_evdev.c +++ b/src/lib/ecore_drm/ecore_drm_evdev.c @@ -585,6 +585,22 @@ _device_handle_button(struct libinput_device *device, struct libinput_event_poin ecore_event_add(ECORE_EVENT_MOUSE_BUTTON_UP, ev, NULL, NULL); } +#if LIBINPUT_HIGHER_08 +static double +_event_scroll_get(struct libinput_event_pointer *pe, enum libinput_pointer_axis axis) +{ + switch (libinput_event_pointer_get_axis_source(pe)) + { + case LIBINPUT_POINTER_AXIS_SOURCE_WHEEL: + return libinput_event_pointer_get_axis_value_discrete(pe, axis); + case LIBINPUT_POINTER_AXIS_SOURCE_FINGER: + case LIBINPUT_POINTER_AXIS_SOURCE_CONTINUOUS: + return libinput_event_pointer_get_axis_value(pe, axis); + } + return 0.0; +} +#endif + static void _device_handle_axis(struct libinput_device *device, struct libinput_event_pointer *event) { @@ -618,13 +634,13 @@ _device_handle_axis(struct libinput_device *device, struct libinput_event_pointe #if LIBINPUT_HIGHER_08 axis = LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL; if (libinput_event_pointer_has_axis(event, axis)) - ev->z = libinput_event_pointer_get_axis_value(event, axis); + ev->z = _event_scroll_get(event, axis); axis = LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL; if (libinput_event_pointer_has_axis(event, axis)) { ev->direction = 1; - ev->z = libinput_event_pointer_get_axis_value(event, axis); + ev->z = _event_scroll_get(event, axis); } #else axis = libinput_event_pointer_get_axis(event); |