Hi Peter, > On Aug 1, 2017, at 3:35 AM, Peter Hutterer <peter.hutte...@who-t.net> wrote: > > This event adds the physical direction of the axis motion, relative to the > axis event we get. Right now, when natural scrolling is enabled things like > volume sliders move the wrong way round. > > By adding the axis motion direction, we can have toolkits swap the scroll > direction for applicable widgets, getting the right behavior on all widgets. > > Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
Other than two minor nits noted below. This is: Reviewed-by: Yong Bakos <yba...@humanoriented.com> But others will certainly need to chime in here. yong > --- > protocol/wayland.xml | 76 ++++++++++++++++++++++++++++++++++++++++++++++------ > 1 file changed, 68 insertions(+), 8 deletions(-) > > diff --git a/protocol/wayland.xml b/protocol/wayland.xml > index 29b63be..4c58589 100644 > --- a/protocol/wayland.xml > +++ b/protocol/wayland.xml > @@ -1651,7 +1651,7 @@ > </request> > </interface> > > - <interface name="wl_seat" version="6"> > + <interface name="wl_seat" version="7"> > <description summary="group of input devices"> > A seat is a group of keyboards, pointer and touch devices. This > object is published as a global during start up, or when such a > @@ -1760,7 +1760,7 @@ > > </interface> > > - <interface name="wl_pointer" version="6"> > + <interface name="wl_pointer" version="7"> > <description summary="pointer input device"> > The wl_pointer interface represents one or more input devices, > such as mice, which control the pointer location and pointer_focus > @@ -2022,8 +2022,9 @@ > axis event sequence, no event is sent. > Only one wl_pointer.axis_source event is permitted per frame. > > - The order of wl_pointer.axis_discrete and wl_pointer.axis_source is > - not guaranteed. > + The order of wl_pointer.axis_relative_direction, > + wl_pointer.axis_discrete and wl_pointer.axis_source is not > + guaranteed. > </description> > <arg name="axis_source" type="uint" enum="axis_source" summary="source > of the axis event"/> > </event> > @@ -2075,15 +2076,74 @@ > The axis number is identical to the axis number in the associated > axis event. > > - The order of wl_pointer.axis_discrete and wl_pointer.axis_source is > - not guaranteed. > + The order of wl_pointer.axis_relative_direction, > + wl_pointer.axis_discrete and wl_pointer.axis_source is not > + guaranteed. > </description> > <arg name="axis" type="uint" enum="axis" summary="axis type"/> > <arg name="discrete" type="int" summary="number of steps"/> > </event> > + > + <!-- Version 7 additions --> > + <enum name="axis_relative_direction"> > + <description summary="axis relative direction"> > + This specifies the direction of the physical motion that caused a > + wl_pointer.axis event, relative to the wl_pointer.axis direction. > + </description> > + <entry name="identical" value="0" > + summary="physical motion matches axis direction"/> > + <entry name="inverted" value="1" > + summary="physical motion is the inverse of the axis direction"/> > + </enum> > + > + <event name="axis_relative_direction" since="7"> > + <description summary="axis relative physical direction event"> > + Relative directional information of the entity causing the axis > + motion. > + > + For a wl_pointer.axis event, the wl_pointer.axis_relative_direction > + event specifies the movement direction of the entity causing the > + wl_pointer.axis event. For example: > + - if a user's fingers on a touchpad move down and this > + causes a wl_pointer.axis vertical_scroll down event, the physical > + direction is 'identical' > + - if a user's fingers on a touchpad move down and this causes a Stray space that misaligns the dash bullet point. > + wl_pointer.axis vertical_scroll up scroll up event ('natural > + scrolling'), the physical direction is 'parallel'. > + > + A client may use this information to adjust scroll motion of > + components. Specifically, enabling natural scrolling causes the > + content to change direction compared to traditional scrolling. > + Some widgets like volume control sliders should match the physical > + direction regardless of whether natural scrolling is active. > + This event enables clients to match the scroll direction of a widget > + to the physical direction. > + > + This event does not occur on its own, it is coupled with a > + wl_pointer.axis event that represents this axis value. > + The protocol guarantees that each axis_relative_direction event is > + always followed by exactly one axis event with the same > + axis number within the same wl_pointer.frame. Note that the protocol > + allows for other events to occur between the axis_relative_direction > + and its coupled axis event. > + > + This event is optional, when not present a client should assume a This event is optional. (full stop) When not... > + relative direction of 'identical'. > + > + The axis number is identical to the axis number in the associated > + axis event. > + > + The order of wl_pointer.axis_relative_direction, > + wl_pointer.axis_discrete and wl_pointer.axis_source is not > + guaranteed. > + </description> > + <arg name="axis" type="uint" enum="axis" summary="axis type"/> > + <arg name="direction" type="uint" enum="axis_relative_direction" > + summary="physical direction relative to axis motion"/> > + </event> > </interface> > > - <interface name="wl_keyboard" version="6"> > + <interface name="wl_keyboard" version="7"> > <description summary="keyboard input device"> > The wl_keyboard interface represents one or more keyboards > associated with a seat. > @@ -2194,7 +2254,7 @@ > </event> > </interface> > > - <interface name="wl_touch" version="6"> > + <interface name="wl_touch" version="7"> > <description summary="touchscreen input device"> > The wl_touch interface represents a touchscreen > associated with a seat. > -- > 2.13.3 > > _______________________________________________ > wayland-devel mailing list > wayland-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel