[PATCH] user32: Added GetPointerType stub
Vijay Kiran Kamuju
infyquest at gmail.com
Tue Apr 2 06:01:40 CDT 2019
From: Louis Lenders <xerox.xerox2000x at gmail.com>
Add more tests for failures.
From: Louis Lenders <xerox.xerox2000x at gmail.com>
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45765
Signed-off-by: Vijay Kiran Kamuju <infyquest at gmail.com>
---
...ms-win-rtcore-ntuser-wmpointer-l1-1-0.spec | 2 +-
dlls/user32/misc.c | 16 ++++++++++
dlls/user32/tests/input.c | 32 +++++++++++++++++++
dlls/user32/user32.spec | 1 +
include/winuser.h | 1 +
5 files changed, 51 insertions(+), 1 deletion(-)
diff --git a/dlls/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0.spec b/dlls/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0.spec
index 93ecc1b3e41..c58d51a47e2 100644
--- a/dlls/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0.spec
+++ b/dlls/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0.spec
@@ -17,7 +17,7 @@
@ stub GetPointerPenInfoHistory
@ stub GetPointerTouchInfo
@ stub GetPointerTouchInfoHistory
-@ stub GetPointerType
+@ stdcall GetPointerType(long ptr) user32.GetPointerType
@ stub GetRawPointerDeviceData
@ stub InitializeTouchInjection
@ stub InjectTouchInput
diff --git a/dlls/user32/misc.c b/dlls/user32/misc.c
index d28cd9fd055..1a03d70ddec 100644
--- a/dlls/user32/misc.c
+++ b/dlls/user32/misc.c
@@ -664,6 +664,22 @@ BOOL WINAPI RegisterTouchHitTestingWindow(HWND hwnd, ULONG value)
return TRUE;
}
+/**********************************************************************
+ * GetPointerType [USER32.@]
+ */
+BOOL WINAPI GetPointerType(UINT32 id, POINTER_INPUT_TYPE *type)
+{
+ FIXME("(%d %p): stub\n", id, type);
+
+ if(!id || !type)
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
+
+ *type = PT_MOUSE;
+ return TRUE;
+}
static const WCHAR imeW[] = {'I','M','E',0};
const struct builtin_class_descr IME_builtin_class =
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c
index 625de3d7688..a37c6a01b79 100644
--- a/dlls/user32/tests/input.c
+++ b/dlls/user32/tests/input.c
@@ -78,6 +78,7 @@ static struct {
static UINT (WINAPI *pSendInput) (UINT, INPUT*, size_t);
static BOOL (WINAPI *pGetCurrentInputMessageSource)( INPUT_MESSAGE_SOURCE *source );
+static BOOL (WINAPI *pGetPointerType)(UINT32, POINTER_INPUT_TYPE*);
static int (WINAPI *pGetMouseMovePointsEx) (UINT, LPMOUSEMOVEPOINT, LPMOUSEMOVEPOINT, int, DWORD);
static UINT (WINAPI *pGetRawInputDeviceList) (PRAWINPUTDEVICELIST, PUINT, UINT);
static UINT (WINAPI *pGetRawInputDeviceInfoW) (HANDLE, UINT, void *, UINT *);
@@ -165,6 +166,7 @@ static void init_function_pointers(void)
GET_PROC(SendInput);
GET_PROC(GetCurrentInputMessageSource);
GET_PROC(GetMouseMovePointsEx);
+ GET_PROC(GetPointerType);
GET_PROC(GetRawInputDeviceList);
GET_PROC(GetRawInputDeviceInfoW);
GET_PROC(GetRawInputDeviceInfoA);
@@ -2800,6 +2802,31 @@ static void test_input_message_source(void)
UnregisterClassA( cls.lpszClassName, GetModuleHandleA(0) );
}
+static void test_GetPointerType(void)
+{
+ BOOL ret;
+ POINTER_INPUT_TYPE type = -1;
+ UINT id = 0;
+
+ SetLastError(0xdeadbeef);
+ ret = pGetPointerType(id, NULL);
+ ok(!ret, "GetPointerType should have failed.\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER,
+ "expected error ERROR_INVALID_PARAMETER, got %u.\n", GetLastError());
+
+ SetLastError(0xdeadbeef);
+ ret = pGetPointerType(id, &type);
+ ok(GetLastError() == ERROR_INVALID_PARAMETER,
+ "expected error ERROR_INVALID_PARAMETER, got %u.\n", GetLastError());
+ ok(!ret, "GetPointerType failed, got type %d for %u.\n", type, id );
+ ok(type == -1, " type %d\n", type );
+
+ id = 1;
+ ret = pGetPointerType(id, &type);
+ ok(ret, "GetPointerType failed, got type %d for %u.\n", type, id );
+ ok(type == PT_MOUSE, " type %d\n", type );
+}
+
START_TEST(input)
{
POINT pos;
@@ -2845,4 +2872,9 @@ START_TEST(input)
win_skip("GetCurrentInputMessageSource is not available\n");
SetCursorPos( pos.x, pos.y );
+
+ if(pGetPointerType)
+ test_GetPointerType();
+ else
+ win_skip("GetPointerType is not available\n");
}
diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec
index d5b8597d8e4..f9a4ae26df4 100644
--- a/dlls/user32/user32.spec
+++ b/dlls/user32/user32.spec
@@ -356,6 +356,7 @@
@ stdcall GetParent(long)
@ stdcall GetPhysicalCursorPos(ptr)
@ stdcall GetPointerDevices(ptr ptr)
+@ stdcall GetPointerType(long ptr)
@ stdcall GetPriorityClipboardFormat(ptr long)
@ stdcall GetProcessDefaultLayout(ptr)
@ stdcall GetProcessDpiAwarenessInternal(long ptr)
diff --git a/include/winuser.h b/include/winuser.h
index 3cffaa19acd..45015199efc 100644
--- a/include/winuser.h
+++ b/include/winuser.h
@@ -3831,6 +3831,7 @@ WINUSERAPI HWND WINAPI GetNextDlgTabItem(HWND,HWND,BOOL);
WINUSERAPI HWND WINAPI GetOpenClipboardWindow(void);
WINUSERAPI HWND WINAPI GetParent(HWND);
WINUSERAPI BOOL WINAPI GetPhysicalCursorPos(POINT*);
+WINUSERAPI BOOL WINAPI GetPointerType(UINT32,POINTER_INPUT_TYPE *);
WINUSERAPI INT WINAPI GetPriorityClipboardFormat(UINT*,INT);
WINUSERAPI BOOL WINAPI GetProcessDefaultLayout(DWORD*);
WINUSERAPI BOOL WINAPI GetProcessDpiAwarenessInternal(HANDLE,DPI_AWARENESS*);
--
2.17.0
More information about the wine-devel
mailing list