diff options
| author | José Expósito <jose.exposito89@gmail.com> | 2022-02-25 17:30:42 +0100 | 
|---|---|---|
| committer | José Expósito <jose.exposito89@gmail.com> | 2022-07-11 11:01:35 +0200 | 
| commit | c6032d6b1cc1cfb884924bb8afbdd200c3258d9a (patch) | |
| tree | 2a497c181b1aec9801cf2ca42b41954b349fedfa /backend/libinput/events.c | |
| parent | 65c436407f37118618b348b9b7303b55322d66a2 (diff) | |
| download | wlroots-c6032d6b1cc1cfb884924bb8afbdd200c3258d9a.tar.xz | |
backend/libinput: handle high-res scroll events
On newer versions of libinput, the event LIBINPUT_EVENT_POINTER_AXIS
has been deprecated in favour of LIBINPUT_EVENT_POINTER_SCROLL_WHEEL,
LIBINPUT_EVENT_POINTER_SCROLL_FINGER and
LIBINPUT_EVENT_POINTER_SCROLL_CONTINUOUS.
Where new events are provided by the backend, ignore
LIBINPUT_EVENT_POINTER_AXIS, receive high-resolution scroll events from
libinput and emit the appropiate wlr_pointer signal.
Diffstat (limited to 'backend/libinput/events.c')
| -rw-r--r-- | backend/libinput/events.c | 17 | 
1 files changed, 17 insertions, 0 deletions
| diff --git a/backend/libinput/events.c b/backend/libinput/events.c index b9f2f43c..c5d9c67a 100644 --- a/backend/libinput/events.c +++ b/backend/libinput/events.c @@ -176,8 +176,25 @@ void handle_libinput_event(struct wlr_libinput_backend *backend,  		handle_pointer_button(event, &dev->pointer);  		break;  	case LIBINPUT_EVENT_POINTER_AXIS: +#if !LIBINPUT_HAS_SCROLL_VALUE120 +		/* This event must be ignored in favour of the SCROLL_* events */  		handle_pointer_axis(event, &dev->pointer); +#endif +		break; +#if LIBINPUT_HAS_SCROLL_VALUE120 +	case LIBINPUT_EVENT_POINTER_SCROLL_WHEEL: +		handle_pointer_axis_value120(event, &dev->pointer, +			WLR_AXIS_SOURCE_WHEEL); +		break; +	case LIBINPUT_EVENT_POINTER_SCROLL_FINGER: +		handle_pointer_axis_value120(event, &dev->pointer, +			WLR_AXIS_SOURCE_FINGER);  		break; +	case LIBINPUT_EVENT_POINTER_SCROLL_CONTINUOUS: +		handle_pointer_axis_value120(event, &dev->pointer, +			WLR_AXIS_SOURCE_CONTINUOUS); +		break; +#endif  	case LIBINPUT_EVENT_TOUCH_DOWN:  		handle_touch_down(event, &dev->touch);  		break; | 
