Jacek Caban : win32u: Move NtUserUnregisterHotKey implementation from user32.
Alexandre Julliard
julliard at winehq.org
Wed Nov 17 16:27:58 CST 2021
Module: wine
Branch: master
Commit: dc03ca3baf4ed8ff6483b9285019b00d9ae78eea
URL: https://source.winehq.org/git/wine.git/?a=commit;h=dc03ca3baf4ed8ff6483b9285019b00d9ae78eea
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Nov 17 12:48:13 2021 +0100
win32u: Move NtUserUnregisterHotKey implementation from user32.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/user32/input.c | 28 ----------------------------
dlls/user32/user32.spec | 2 +-
dlls/win32u/driver.c | 6 ++++++
dlls/win32u/gdiobj.c | 1 +
dlls/win32u/input.c | 28 ++++++++++++++++++++++++++++
dlls/win32u/win32u.spec | 2 +-
dlls/win32u/win32u_private.h | 1 +
dlls/win32u/wrappers.c | 5 +++++
8 files changed, 43 insertions(+), 30 deletions(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c
index c62ac755bb8..3de25f4218a 100644
--- a/dlls/user32/input.c
+++ b/dlls/user32/input.c
@@ -919,34 +919,6 @@ BOOL WINAPI RegisterHotKey(HWND hwnd,INT id,UINT modifiers,UINT vk)
return ret;
}
-/***********************************************************************
- * UnregisterHotKey (USER32.@)
- */
-BOOL WINAPI UnregisterHotKey(HWND hwnd,INT id)
-{
- BOOL ret;
- UINT modifiers, vk;
-
- TRACE_(keyboard)("(%p,%d)\n",hwnd,id);
-
- SERVER_START_REQ( unregister_hotkey )
- {
- req->window = wine_server_user_handle( hwnd );
- req->id = id;
- if ((ret = !wine_server_call_err( req )))
- {
- modifiers = reply->flags;
- vk = reply->vkey;
- }
- }
- SERVER_END_REQ;
-
- if (ret)
- USER_Driver->pUnregisterHotKey(hwnd, modifiers, vk);
-
- return ret;
-}
-
/***********************************************************************
* LoadKeyboardLayoutW (USER32.@)
*/
diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec
index 6aa71f814b6..2b022d931aa 100644
--- a/dlls/user32/user32.spec
+++ b/dlls/user32/user32.spec
@@ -780,7 +780,7 @@
@ stdcall UnregisterClassA(str long)
@ stdcall UnregisterClassW(wstr long)
@ stdcall UnregisterDeviceNotification(long)
-@ stdcall UnregisterHotKey(long long)
+@ stdcall UnregisterHotKey(long long) NtUserUnregisterHotKey
# @ stub UnregisterMessagePumpHook
@ stdcall UnregisterPowerSettingNotification(ptr)
@ stdcall UnregisterTouchWindow(long)
diff --git a/dlls/win32u/driver.c b/dlls/win32u/driver.c
index ad2f4887198..f8cce32b5f3 100644
--- a/dlls/win32u/driver.c
+++ b/dlls/win32u/driver.c
@@ -1029,6 +1029,11 @@ static INT CDECL loaderdrv_ToUnicodeEx( UINT virt, UINT scan, const BYTE *state,
return load_driver()->pToUnicodeEx( virt, scan, state, str, size, flags, layout );
}
+static void CDECL loaderdrv_UnregisterHotKey( HWND hwnd, UINT modifiers, UINT vk )
+{
+ load_driver()->pUnregisterHotKey( hwnd, modifiers, vk );
+}
+
static SHORT CDECL loaderdrv_VkKeyScanEx( WCHAR ch, HKL layout )
{
return load_driver()->pVkKeyScanEx( ch, layout );
@@ -1046,6 +1051,7 @@ static const struct user_driver_funcs lazy_load_driver =
.pGetKeyboardLayoutList = loaderdrv_GetKeyboardLayoutList,
.pMapVirtualKeyEx = loaderdrv_MapVirtualKeyEx,
.pToUnicodeEx = loaderdrv_ToUnicodeEx,
+ .pUnregisterHotKey = loaderdrv_UnregisterHotKey,
.pVkKeyScanEx = loaderdrv_VkKeyScanEx,
.pUpdateClipboard = loaderdrv_UpdateClipboard,
};
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c
index 0303e5acd42..39186cc94a7 100644
--- a/dlls/win32u/gdiobj.c
+++ b/dlls/win32u/gdiobj.c
@@ -1176,6 +1176,7 @@ static struct unix_funcs unix_funcs =
NtUserIsClipboardFormatAvailable,
NtUserMapVirtualKeyEx,
NtUserToUnicodeEx,
+ NtUserUnregisterHotKey,
NtUserVkKeyScanEx,
GDIRealizePalette,
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
index a1249b505f6..e1c8595ac07 100644
--- a/dlls/win32u/input.c
+++ b/dlls/win32u/input.c
@@ -670,3 +670,31 @@ UINT WINAPI NtUserGetKeyboardLayoutList( INT size, HKL *layouts )
return count;
}
+
+/***********************************************************************
+ * NtUserUnregisterHotKey (win32u.@)
+ */
+BOOL WINAPI NtUserUnregisterHotKey( HWND hwnd, INT id )
+{
+ BOOL ret;
+ UINT modifiers, vk;
+
+ TRACE_(keyboard)("(%p,%d)\n",hwnd,id);
+
+ SERVER_START_REQ( unregister_hotkey )
+ {
+ req->window = wine_server_user_handle( hwnd );
+ req->id = id;
+ if ((ret = !wine_server_call_err( req )))
+ {
+ modifiers = reply->flags;
+ vk = reply->vkey;
+ }
+ }
+ SERVER_END_REQ;
+
+ if (ret)
+ user_driver->pUnregisterHotKey(hwnd, modifiers, vk);
+
+ return ret;
+}
diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec
index 99b09b23201..47e352c2f27 100644
--- a/dlls/win32u/win32u.spec
+++ b/dlls/win32u/win32u.spec
@@ -1289,7 +1289,7 @@
@ stub NtUserUnloadKeyboardLayout
@ stub NtUserUnlockWindowStation
@ stub NtUserUnregisterClass
-@ stub NtUserUnregisterHotKey
+@ stdcall NtUserUnregisterHotKey(long long)
@ stub NtUserUnregisterSessionPort
@ stub NtUserUnregisterUserApiHook
@ stub NtUserUpdateDefaultDesktopThumbnail
diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h
index 13b75b91a7c..ecc9833a037 100644
--- a/dlls/win32u/win32u_private.h
+++ b/dlls/win32u/win32u_private.h
@@ -204,6 +204,7 @@ struct unix_funcs
UINT (WINAPI *pNtUserMapVirtualKeyEx)( UINT code, UINT type, HKL layout );
INT (WINAPI *pNtUserToUnicodeEx)( UINT virt, UINT scan, const BYTE *state,
WCHAR *str, int size, UINT flags, HKL layout );
+ BOOL (WINAPI *pNtUserUnregisterHotKey)( HWND hwnd, INT id );
WORD (WINAPI *pNtUserVkKeyScanEx)( WCHAR chr, HKL layout );
/* Wine-specific functions */
diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c
index 1f5bef4e4b8..63866ac451c 100644
--- a/dlls/win32u/wrappers.c
+++ b/dlls/win32u/wrappers.c
@@ -642,6 +642,11 @@ INT WINAPI NtUserToUnicodeEx( UINT virt, UINT scan, const BYTE *state,
return unix_funcs->pNtUserToUnicodeEx( virt, scan, state, str, size, flags, layout );
}
+BOOL WINAPI NtUserUnregisterHotKey( HWND hwnd, INT id )
+{
+ return unix_funcs->pNtUserUnregisterHotKey( hwnd, id );
+}
+
WORD WINAPI NtUserVkKeyScanEx( WCHAR chr, HKL layout )
{
return unix_funcs->pNtUserVkKeyScanEx( chr, layout );
More information about the wine-cvs
mailing list