diff --git a/reactos/dll/win32/user32/misc/desktop.c b/reactos/dll/win32/user32/misc/desktop.c index 93e1e2981ce..b5a338b5c41 100644 --- a/reactos/dll/win32/user32/misc/desktop.c +++ b/reactos/dll/win32/user32/misc/desktop.c @@ -703,7 +703,9 @@ SetShellWindow(HWND hwndShell) HWND STDCALL GetShellWindow(VOID) { - return NtUserGetShellWindow(); + PDESKTOP pdi; + pdi = GetThreadDesktopInfo(); + return pdi->hShellWindow; } diff --git a/reactos/include/reactos/win32k/ntuser.h b/reactos/include/reactos/win32k/ntuser.h index a754cafa809..17216e0eb6d 100644 --- a/reactos/include/reactos/win32k/ntuser.h +++ b/reactos/include/reactos/win32k/ntuser.h @@ -34,6 +34,7 @@ typedef struct _DESKTOP ULONG_PTR HeapLimit; HWND hTaskManWindow; HWND hProgmanWindow; + HWND hShellWindow; struct _WINDOW *Wnd; union @@ -333,7 +334,7 @@ typedef struct _W32CLIENTINFO ULONG_PTR ulClientDelta; PVOID phkCurrent; ULONG fsHooks; - HWND hWND; // Well be replaced with CALLBACKWND. + HWND hWND; // Will be replaced with CALLBACKWND. PVOID pvWND; // " " ULONG Win32ClientInfo; DWORD dwHookCurrent; @@ -373,6 +374,8 @@ typedef struct _PROPERTY ATOM Atom; } PROPERTY, *PPROPERTY; + + PW32THREADINFO GetW32ThreadInfo(VOID); PW32PROCESSINFO GetW32ProcessInfo(VOID); @@ -1281,7 +1284,7 @@ NtUserGetClassName(HWND hWnd, INT NTAPI NtUserGetClassName(HWND hWnd, - BOOL Unknown, // 0 GetClassNameW, 1 RealGetWindowClassA/W + BOOL Real, // 0 GetClassNameW, 1 RealGetWindowClassA/W PUNICODE_STRING ClassName); #endif @@ -2725,10 +2728,6 @@ NtUserGetScrollInfo( int fnBar, LPSCROLLINFO lpsi); -HWND -NTAPI -NtUserGetShellWindow(); - HWND NTAPI NtUserGetWindow(HWND hWnd, UINT Relationship); diff --git a/reactos/subsystems/win32/win32k/ntuser/window.c b/reactos/subsystems/win32/win32k/ntuser/window.c index 3c4b75646be..ab285aa5cd5 100644 --- a/reactos/subsystems/win32/win32k/ntuser/window.c +++ b/reactos/subsystems/win32/win32k/ntuser/window.c @@ -3079,7 +3079,14 @@ CLEANUP: - +/* + * UserGetShellWindow + * + * Returns a handle to shell window that was set by NtUserSetShellWindowEx. + * + * Status + * @implemented + */ HWND FASTCALL UserGetShellWindow() { PWINSTATION_OBJECT WinStaObject; @@ -3102,32 +3109,6 @@ HWND FASTCALL UserGetShellWindow() return( Ret); } - -/* - * NtUserGetShellWindow - * - * Returns a handle to shell window that was set by NtUserSetShellWindowEx. - * - * Status - * @implemented - */ - -HWND STDCALL -NtUserGetShellWindow() -{ - DECLARE_RETURN(HWND); - - DPRINT("Enter NtUserGetShellWindow\n"); - UserEnterShared(); - - RETURN( UserGetShellWindow() ); - -CLEANUP: - DPRINT("Leave NtUserGetShellWindow, ret=%i\n",_ret_); - UserLeave(); - END_CLEANUP; -} - /* * NtUserSetShellWindowEx * @@ -3137,7 +3118,6 @@ CLEANUP: * Status * @implemented */ - BOOL STDCALL NtUserSetShellWindowEx(HWND hwndShell, HWND hwndListView) { @@ -3146,6 +3126,7 @@ NtUserSetShellWindowEx(HWND hwndShell, HWND hwndListView) DECLARE_RETURN(BOOL); USER_REFERENCE_ENTRY Ref; NTSTATUS Status; + PW32THREADINFO ti;; DPRINT("Enter NtUserSetShellWindowEx\n"); UserEnterExclusive(); @@ -3207,6 +3188,9 @@ NtUserSetShellWindowEx(HWND hwndShell, HWND hwndListView) WinStaObject->ShellWindow = hwndShell; WinStaObject->ShellListView = hwndListView; + ti = GetW32ThreadInfo(); + if (ti->Desktop) ((PDESKTOP)ti->Desktop)->hShellWindow = hwndShell; + UserDerefObjectCo(WndShell); ObDereferenceObject(WinStaObject); diff --git a/reactos/subsystems/win32/win32k/w32ksvc.db b/reactos/subsystems/win32/win32k/w32ksvc.db index 6e7f3178011..e73654623b3 100644 --- a/reactos/subsystems/win32/win32k/w32ksvc.db +++ b/reactos/subsystems/win32/win32k/w32ksvc.db @@ -679,6 +679,10 @@ NtGdiSetViewportExtEx 4 NtGdiSetViewportOrgEx 4 NtGdiSetWindowExtEx 4 NtGdiSetWindowOrgEx 4 +NtGdiGetFontFamilyInfo 4 +NtGdiOffsetViewportOrgEx 4 +NtGdiOffsetWindowOrgEx 4 +# NtUserBuildMenuItemList 4 NtUserCreateCursorIconHandle 2 NtUserGetClassLong 3 @@ -687,7 +691,6 @@ NtUserGetLastInputInfo 1 NtUserGetMinMaxInfo 3 NtUserGetMonitorInfo 2 NtUserGetScrollInfo 3 -NtUserGetShellWindow 0 NtUserGetWindow 2 NtUserGetWindowLong 3 NtUserMenuInfo 3 @@ -700,6 +703,3 @@ NtUserSendMessage 5 NtUserSendMessageTimeout 8 NtUserSendNotifyMessage 4 NtUserSetScrollBarInfo 3 -NtGdiGetFontFamilyInfo 4 -NtGdiOffsetViewportOrgEx 4 -NtGdiOffsetWindowOrgEx 4