[PATCH] dix: fix inverted handling of legacy scroll button events

Peter Hutterer peter.hutterer at who-t.net
Tue Oct 4 19:14:51 PDT 2011


On Tue, Oct 04, 2011 at 10:06:08PM +0200, Max Schwarz wrote:
> This bug led to inverted scrolling axes with legacy drivers that
> do not support smooth scrolling classes.
> 
> Signed-off-by: Max Schwarz <Max at x-quadraht.de>

merged, thanks. though I've amended the commit message, this can only be
triggered if a driver does support smooth scrolling but sends legacy events
nonetheless (which is why I hadn't found this earlier).

Cheers,
  Peter
> ---
>  dix/getevents.c |    9 +++++----
>  1 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/dix/getevents.c b/dix/getevents.c
> index ebf2653..97c3937 100644
> --- a/dix/getevents.c
> +++ b/dix/getevents.c
> @@ -1330,21 +1330,22 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type,
>          double val, adj;
>          int axis;
>  
> +        /* Up is negative on valuators, down positive */
>          switch (buttons) {
>          case 4:
> -            adj = 1.0;
> +            adj = -1.0;
>              axis = v_scroll_axis;
>              break;
>          case 5:
> -            adj = -1.0;
> +            adj = 1.0;
>              axis = v_scroll_axis;
>              break;
>          case 6:
> -            adj = 1.0;
> +            adj = -1.0;
>              axis = h_scroll_axis;
>              break;
>          case 7:
> -            adj = -1.0;
> +            adj = 1.0;
>              axis = h_scroll_axis;
>              break;
>          default:
> -- 
> 1.7.4.1
> 
> 


More information about the xorg-devel mailing list