Module: wine Branch: master Commit: ae984f630b040b95093ab149e3d344063ee2aa7f URL: https://gitlab.winehq.org/wine/wine/-/commit/ae984f630b040b95093ab149e3d3440...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Nov 28 21:35:53 2022 +0100
win32u: Move NtUserValidateRect implementation from user32.
---
dlls/user32/icontitle.c | 2 +- dlls/user32/painting.c | 20 -------------------- dlls/user32/user32.spec | 2 +- dlls/win32u/dce.c | 16 ++++++++++++++++ dlls/win32u/syscall.c | 1 + dlls/win32u/win32u.spec | 2 +- dlls/wow64win/syscall.h | 1 + dlls/wow64win/user.c | 8 ++++++++ include/ntuser.h | 1 + 9 files changed, 30 insertions(+), 23 deletions(-)
diff --git a/dlls/user32/icontitle.c b/dlls/user32/icontitle.c index 047ac5ef1c8..687f2b69d72 100644 --- a/dlls/user32/icontitle.c +++ b/dlls/user32/icontitle.c @@ -176,7 +176,7 @@ LRESULT WINAPI IconTitleWndProc( HWND hWnd, UINT msg, else lParam = (owner == GetActiveWindow()); if( ICONTITLE_Paint( hWnd, owner, (HDC)wParam, (BOOL)lParam ) ) - ValidateRect( hWnd, NULL ); + NtUserValidateRect( hWnd, NULL ); return 1; } return DefWindowProcW( hWnd, msg, wParam, lParam ); diff --git a/dlls/user32/painting.c b/dlls/user32/painting.c index c962f0dccf2..be6f91e1bde 100644 --- a/dlls/user32/painting.c +++ b/dlls/user32/painting.c @@ -52,26 +52,6 @@ BOOL WINAPI ValidateRgn( HWND hwnd, HRGN hrgn ) }
-/*********************************************************************** - * ValidateRect (USER32.@) - * - * MSDN: if hwnd parameter is NULL, ValidateRect invalidates and redraws - * all windows and sends WM_ERASEBKGND and WM_NCPAINT. - */ -BOOL WINAPI ValidateRect( HWND hwnd, const RECT *rect ) -{ - UINT flags = RDW_VALIDATE; - - if (!hwnd) - { - flags = RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_FRAME | RDW_ERASE | RDW_ERASENOW; - rect = NULL; - } - - return NtUserRedrawWindow( hwnd, rect, 0, flags ); -} - - /************************************************************************* * ScrollWindow (USER32.@) * diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec index e71370e9761..b843d2068cd 100644 --- a/dlls/user32/user32.spec +++ b/dlls/user32/user32.spec @@ -807,7 +807,7 @@ @ stdcall UserSignalProc(long long long long) # @ stub VRipOutput # @ stub VTagOutput -@ stdcall ValidateRect(long ptr) +@ stdcall ValidateRect(long ptr) NtUserValidateRect @ stdcall ValidateRgn(long long) @ stdcall VkKeyScanA(long) @ stdcall VkKeyScanExA(long long) diff --git a/dlls/win32u/dce.c b/dlls/win32u/dce.c index 9b5f87589c6..364fbe6455b 100644 --- a/dlls/win32u/dce.c +++ b/dlls/win32u/dce.c @@ -1507,6 +1507,22 @@ BOOL WINAPI NtUserRedrawWindow( HWND hwnd, const RECT *rect, HRGN hrgn, UINT fla return ret; }
+/*********************************************************************** + * NtUserValidateRect (win32u.@) + */ +BOOL WINAPI NtUserValidateRect( HWND hwnd, const RECT *rect ) +{ + UINT flags = RDW_VALIDATE; + + if (!hwnd) + { + flags = RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_FRAME | RDW_ERASE | RDW_ERASENOW; + rect = NULL; + } + + return NtUserRedrawWindow( hwnd, rect, 0, flags ); +} + /*********************************************************************** * NtUserGetUpdateRgn (win32u.@) */ diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index 3e029f413e5..97052d4dc46 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -302,6 +302,7 @@ static void * const syscalls[] = NtUserUnregisterClass, NtUserUnregisterHotKey, NtUserUpdateInputContext, + NtUserValidateRect, NtUserVkKeyScanEx, NtUserWaitForInputIdle, NtUserWindowFromDC, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 9a987045868..d4e4365ce23 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -1300,7 +1300,7 @@ @ stub NtUserUpdateWindowInputSinkHints @ stub NtUserUpdateWindowTrackingInfo @ stub NtUserUserHandleGrantAccess -@ stub NtUserValidateRect +@ stdcall -syscall NtUserValidateRect(long ptr) @ stub NtUserValidateTimerCallback @ stdcall -syscall NtUserVkKeyScanEx(long long) @ stub NtUserWOWCleanup diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index 25d8d42e575..c2cd0b7bbf5 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -288,6 +288,7 @@ SYSCALL_ENTRY( NtUserUnregisterClass ) \ SYSCALL_ENTRY( NtUserUnregisterHotKey ) \ SYSCALL_ENTRY( NtUserUpdateInputContext ) \ + SYSCALL_ENTRY( NtUserValidateRect ) \ SYSCALL_ENTRY( NtUserVkKeyScanEx ) \ SYSCALL_ENTRY( NtUserWaitForInputIdle ) \ SYSCALL_ENTRY( NtUserWindowFromDC ) \ diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index 78ffc34e68e..af77475e740 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -4102,6 +4102,14 @@ NTSTATUS WINAPI wow64_NtUserUpdateInputContext( UINT *args ) return NtUserUpdateInputContext( handle, attr, value ); }
+NTSTATUS WINAPI wow64_NtUserValidateRect( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + const RECT *rect = get_ptr( &args ); + + return NtUserValidateRect( hwnd, rect ); +} + NTSTATUS WINAPI wow64_NtUserVkKeyScanEx( UINT *args ) { WCHAR chr = get_ulong( &args ); diff --git a/include/ntuser.h b/include/ntuser.h index cff2b6633a5..18718ea8a2c 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -892,6 +892,7 @@ BOOL WINAPI NtUserUpdateInputContext( HIMC handle, UINT attr, UINT_PTR value BOOL WINAPI NtUserUpdateLayeredWindow( HWND hwnd, HDC hdc_dst, const POINT *pts_dst, const SIZE *size, HDC hdc_src, const POINT *pts_src, COLORREF key, const BLENDFUNCTION *blend, DWORD flags, const RECT *dirty ); +BOOL WINAPI NtUserValidateRect( HWND hwnd, const RECT *rect ); WORD WINAPI NtUserVkKeyScanEx( WCHAR chr, HKL layout ); DWORD WINAPI NtUserWaitForInputIdle( HANDLE process, DWORD timeout, BOOL wow ); HWND WINAPI NtUserWindowFromDC( HDC hdc );