mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
Add missing file
This commit is contained in:
parent
e09468ec17
commit
ced72a6a0a
@ -0,0 +1,76 @@
|
||||
From 899bf2085fbd1e8b3e5ddcea3a9070f2836f3c06 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dereklesho52@Gmail.com>
|
||||
Date: Wed, 4 Sep 2019 10:07:39 -0500
|
||||
Subject: [PATCH 11/11] winex11.drv: [HACK] XWayland workaround.
|
||||
|
||||
---
|
||||
dlls/winex11.drv/mouse.c | 36 ++++++++++++++++++++++++++++++++----
|
||||
1 file changed, 32 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c
|
||||
index 4d5b0a45ff..178e717131 100644
|
||||
--- a/dlls/winex11.drv/mouse.c
|
||||
+++ b/dlls/winex11.drv/mouse.c
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/cursorfont.h>
|
||||
#include <stdarg.h>
|
||||
+#include <stdlib.h>
|
||||
#ifdef HAVE_X11_EXTENSIONS_XINPUT2_H
|
||||
#include <X11/extensions/XInput2.h>
|
||||
#endif
|
||||
@@ -1784,6 +1785,17 @@ static BOOL X11DRV_DeviceChanged( XGenericEventCookie *xev )
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+/* XWayland only reports normalized absolute values and raw relative values,
|
||||
+ * all under an absolute valuator.
|
||||
+ */
|
||||
+static inline int xwayland_workaround(void)
|
||||
+{
|
||||
+ static int workaround = -1;
|
||||
+ if (workaround != -1) return workaround;
|
||||
+ workaround = !!getenv("WAYLAND_DISPLAY");
|
||||
+ return workaround;
|
||||
+}
|
||||
+
|
||||
/***********************************************************************
|
||||
* X11DRV_RawMotion
|
||||
*/
|
||||
@@ -1886,13 +1898,29 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev )
|
||||
}
|
||||
if (i == x_abs->number)
|
||||
{
|
||||
- raw_input.data.mouse.usFlags = MOUSE_MOVE_ABSOLUTE | MOUSE_VIRTUAL_DESKTOP;
|
||||
- raw_input.data.mouse.lLastX = raw_x = raw_val * (65536 / (x_abs->max - x_abs->min));
|
||||
+ if (xwayland_workaround())
|
||||
+ {
|
||||
+ raw_input.data.mouse.usFlags = MOUSE_MOVE_RELATIVE;
|
||||
+ raw_input.data.mouse.lLastX = raw_x = raw_val;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ raw_input.data.mouse.usFlags = MOUSE_MOVE_ABSOLUTE | MOUSE_VIRTUAL_DESKTOP;
|
||||
+ raw_input.data.mouse.lLastX = raw_x = raw_val * (65536 / (x_abs->max - x_abs->min));
|
||||
+ }
|
||||
}
|
||||
if (i == y_abs->number)
|
||||
{
|
||||
- raw_input.data.mouse.usFlags = MOUSE_MOVE_ABSOLUTE | MOUSE_VIRTUAL_DESKTOP;
|
||||
- raw_input.data.mouse.lLastY = raw_y = raw_val * (65536 / (y_abs->max - y_abs->min));
|
||||
+ if (xwayland_workaround())
|
||||
+ {
|
||||
+ raw_input.data.mouse.usFlags = MOUSE_MOVE_RELATIVE;
|
||||
+ raw_input.data.mouse.lLastY = raw_y = raw_val;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ raw_input.data.mouse.usFlags = MOUSE_MOVE_ABSOLUTE | MOUSE_VIRTUAL_DESKTOP;
|
||||
+ raw_input.data.mouse.lLastY = raw_y = raw_val * (65536 / (y_abs->max - y_abs->min));
|
||||
+ }
|
||||
}
|
||||
if (i == wheel->number)
|
||||
{
|
||||
--
|
||||
2.23.0
|
||||
|
Loading…
x
Reference in New Issue
Block a user