From: Jacek Caban jacek@codeweavers.com
--- dlls/user32/winpos.c | 3 +-- dlls/win32u/syscall.c | 1 + dlls/win32u/win32u.spec | 2 +- dlls/win32u/window.c | 8 ++++++++ dlls/wow64win/syscall.h | 1 + dlls/wow64win/user.c | 9 +++++++++ include/ntuser.h | 1 + 7 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c index cee549d1ea9..00f82c33538 100644 --- a/dlls/user32/winpos.c +++ b/dlls/user32/winpos.c @@ -107,8 +107,7 @@ HWND WINAPI ChildWindowFromPoint( HWND parent, POINT pt ) */ HWND WINAPI RealChildWindowFromPoint( HWND parent, POINT pt ) { - return NtUserChildWindowFromPointEx( parent, pt.x, pt.y, - CWP_SKIPTRANSPARENT | CWP_SKIPINVISIBLE ); + return NtUserRealChildWindowFromPoint( parent, pt.x, pt.y ); }
/******************************************************************* diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index 558edc0257e..6aacfa47f2b 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -239,6 +239,7 @@ static void * const syscalls[] = NtUserPostThreadMessage, NtUserPrintWindow, NtUserQueryInputContext, + NtUserRealChildWindowFromPoint, NtUserRedrawWindow, NtUserRegisterClassExWOW, NtUserRegisterHotKey, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 1d85a450748..e2d84238008 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -1117,7 +1117,7 @@ @ stdcall -syscall NtUserQueryInputContext(long long) @ stub NtUserQuerySendMessage @ stub NtUserQueryWindow -@ stub NtUserRealChildWindowFromPoint +@ stdcall -syscall NtUserRealChildWindowFromPoint(long long long) @ stub NtUserRealInternalGetMessage @ stub NtUserRealWaitMessageEx @ stdcall -syscall NtUserRedrawWindow(long ptr long long) diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c index 9a8963ce2a1..5074f255fd8 100644 --- a/dlls/win32u/window.c +++ b/dlls/win32u/window.c @@ -2296,6 +2296,14 @@ HWND WINAPI NtUserChildWindowFromPointEx( HWND parent, LONG x, LONG y, UINT flag return ret; }
+/******************************************************************* + * NtUserRealChildWindowFromPoint (win32u.@) + */ +HWND WINAPI NtUserRealChildWindowFromPoint( HWND parent, LONG x, LONG y ) +{ + return NtUserChildWindowFromPointEx( parent, x, y, CWP_SKIPTRANSPARENT | CWP_SKIPINVISIBLE ); +} + /******************************************************************* * get_work_rect * diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index 8573fa743a5..1730b6a1f60 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -225,6 +225,7 @@ SYSCALL_ENTRY( NtUserPostThreadMessage ) \ SYSCALL_ENTRY( NtUserPrintWindow ) \ SYSCALL_ENTRY( NtUserQueryInputContext ) \ + SYSCALL_ENTRY( NtUserRealChildWindowFromPoint ) \ SYSCALL_ENTRY( NtUserRedrawWindow ) \ SYSCALL_ENTRY( NtUserRegisterClassExWOW ) \ SYSCALL_ENTRY( NtUserRegisterHotKey ) \ diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index afc73ca1322..831ee2e84fc 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -2423,6 +2423,15 @@ NTSTATUS WINAPI wow64_NtUserGetRawInputDeviceList( UINT *args ) } }
+NTSTATUS WINAPI wow64_NtUserRealChildWindowFromPoint( UINT *args ) +{ + HWND parent = get_handle( &args ); + LONG x = get_ulong( &args ); + LONG y = get_ulong( &args ); + + return HandleToUlong( NtUserRealChildWindowFromPoint( parent, x, y )); +} + NTSTATUS WINAPI wow64_NtUserRegisterClassExWOW( UINT *args ) { const WNDCLASSEXW32 *wc32 = get_ptr( &args ); diff --git a/include/ntuser.h b/include/ntuser.h index 3c41e435712..34e7f5240e7 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -812,6 +812,7 @@ BOOL WINAPI NtUserPostMessage( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa BOOL WINAPI NtUserPostThreadMessage( DWORD thread, UINT msg, WPARAM wparam, LPARAM lparam ); BOOL WINAPI NtUserPrintWindow( HWND hwnd, HDC hdc, UINT flags ); UINT_PTR WINAPI NtUserQueryInputContext( HIMC handle, UINT attr ); +HWND WINAPI NtUserRealChildWindowFromPoint( HWND parent, LONG x, LONG y ); BOOL WINAPI NtUserRedrawWindow( HWND hwnd, const RECT *rect, HRGN hrgn, UINT flags ); ATOM WINAPI NtUserRegisterClassExWOW( const WNDCLASSEXW *wc, UNICODE_STRING *name, UNICODE_STRING *version, struct client_menu_name *client_menu_name, DWORD fnid, DWORD flags,