[PATCH] Handle mouse wheel (corrected version)

Kristian Høgsberg hoegsberg at gmail.com
Mon Jun 3 21:10:38 PDT 2013


On Mon, Jun 03, 2013 at 10:55:47PM +0200, Hardening wrote:
> The RDP compositor was ignoring mouse wheel events, this patch adds
> support for it.

Committed, thanks.

Kristian

> ---
>  src/compositor-rdp.c | 19 ++++++++++++++++++-
>  1 file changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/src/compositor-rdp.c b/src/compositor-rdp.c
> index e855ba6..b81d789 100644
> --- a/src/compositor-rdp.c
> +++ b/src/compositor-rdp.c
> @@ -42,6 +42,7 @@
>  #include "pixman-renderer.h"
>  
>  #define MAX_FREERDP_FDS 32
> +#define DEFAULT_AXIS_STEP_DISTANCE wl_fixed_from_int(10)
>  
>  struct rdp_compositor_config {
>  	int width;
> @@ -758,7 +759,7 @@ xf_peer_activate(freerdp_peer *client)
>  
>  static void
>  xf_mouseEvent(rdpInput *input, UINT16 flags, UINT16 x, UINT16 y) {
> -	wl_fixed_t wl_x, wl_y;
> +	wl_fixed_t wl_x, wl_y, axis;
>  	RdpPeerContext *peerContext = (RdpPeerContext *)input->context;
>  	struct rdp_output *output;
>  	uint32_t button = 0;
> @@ -785,6 +786,22 @@ xf_mouseEvent(rdpInput *input, UINT16 flags, UINT16 x, UINT16 y) {
>  			(flags & PTR_FLAGS_DOWN) ? WL_POINTER_BUTTON_STATE_PRESSED : WL_POINTER_BUTTON_STATE_RELEASED
>  		);
>  	}
> +
> +	if (flags & PTR_FLAGS_WHEEL) {
> +		/* DEFAULT_AXIS_STEP_DISTANCE is stolen from compositor-x11.c
> +		 * The RDP specs says the lower bits of flags contains the "the number of rotation
> +		 * units the mouse wheel was rotated".
> +		 *
> +		 * http://blogs.msdn.com/b/oldnewthing/archive/2013/01/23/10387366.aspx explains the 120 value
> +		 */
> +		axis = (DEFAULT_AXIS_STEP_DISTANCE * (flags & 0xff)) / 120;
> +		if (flags & PTR_FLAGS_WHEEL_NEGATIVE)
> +			axis = -axis;
> +
> +		notify_axis(&peerContext->item.seat, weston_compositor_get_time(),
> +					    WL_POINTER_AXIS_VERTICAL_SCROLL,
> +					    axis);
> +	}
>  }
>  
>  static void
> -- 
> 1.8.1.2
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list