mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-01-04 00:30:20 +01:00
Handle mouse wheel
The RDP compositor was ignoring mouse wheel events, this patch adds support for it.
This commit is contained in:
parent
3b64d6236c
commit
b60e46f6ba
1 changed files with 18 additions and 1 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue