mirror of
https://github.com/reactos/reactos.git
synced 2025-06-03 08:20:27 +00:00
[WIN32SS] Move SwitchToThisWindow codes to win32k (#987)
- Implement user32!SwitchToThisWindow by NtUserCallTwoParam TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW. - Improve user32!CloseWindow with using SetActiveWindow and ShowWindow (synchronized). CORE-15165
This commit is contained in:
parent
07e6af6aa1
commit
4bd0166e63
3 changed files with 28 additions and 18 deletions
|
@ -3,7 +3,8 @@
|
|||
* PROJECT: ReactOS kernel
|
||||
* PURPOSE: NtUserCallXxx call stubs
|
||||
* FILE: win32ss/user/ntuser/simplecall.c
|
||||
* PROGRAMER: Ge van Geldorp (ge@gse.nl)
|
||||
* PROGRAMERS: Ge van Geldorp (ge@gse.nl)
|
||||
* Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
|
||||
*/
|
||||
|
||||
#include <win32k.h>
|
||||
|
@ -505,9 +506,24 @@ NtUserCallTwoParam(
|
|||
}
|
||||
|
||||
case TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW:
|
||||
STUB
|
||||
{
|
||||
HWND hwnd = (HWND)Param1;
|
||||
Ret = 0;
|
||||
Window = UserGetWindowObject(hwnd);
|
||||
if (!Window)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if ((BOOL)Param2)
|
||||
{
|
||||
if (Window->style & WS_MINIMIZE)
|
||||
{
|
||||
UserPostMessage(hwnd, WM_SYSCOMMAND, SC_RESTORE, 0);
|
||||
}
|
||||
}
|
||||
UserSetActiveWindow(Window);
|
||||
break;
|
||||
}
|
||||
|
||||
case TWOPARAM_ROUTINE_SETCARETPOS:
|
||||
Ret = (DWORD_PTR)co_IntSetCaretPos((int)Param1, (int)Param2);
|
||||
|
|
|
@ -688,6 +688,11 @@ EXTINLINE BOOL NtUserxUpdateUiState(HWND hWnd, DWORD Param)
|
|||
return (BOOL)NtUserCallTwoParam((DWORD_PTR)hWnd, (DWORD_PTR)Param, TWOPARAM_ROUTINE_ROS_UPDATEUISTATE);
|
||||
}
|
||||
|
||||
EXTINLINE VOID NtUserxSwitchToThisWindow(HWND hWnd, BOOL bUnknown)
|
||||
{
|
||||
NtUserCallTwoParam((DWORD_PTR)hWnd, (DWORD_PTR)bUnknown, TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW);
|
||||
}
|
||||
|
||||
EXTINLINE BOOL NtUserxShowOwnedPopups(HWND hWnd, BOOL fShow)
|
||||
{
|
||||
return (BOOL)NtUserCallTwoParam((DWORD_PTR)hWnd, fShow, TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS);
|
||||
|
|
|
@ -79,22 +79,9 @@ BringWindowToTop(HWND hWnd)
|
|||
|
||||
|
||||
VOID WINAPI
|
||||
SwitchToThisWindow(HWND hwnd, BOOL fAltTab)
|
||||
SwitchToThisWindow(HWND hwnd, BOOL bUnknown)
|
||||
{
|
||||
HWND hwndFG;
|
||||
if (fAltTab)
|
||||
{
|
||||
if (IsIconic(hwnd))
|
||||
PostMessageW(hwnd, WM_SYSCOMMAND, SC_RESTORE, 0);
|
||||
SetForegroundWindow(hwnd);
|
||||
}
|
||||
else
|
||||
{
|
||||
hwndFG = GetForegroundWindow();
|
||||
PostMessageW(hwnd, WM_SYSCOMMAND, SC_RESTORE, 0);
|
||||
SetWindowPos(hwnd, hwndFG, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
|
||||
SetWindowPos(hwndFG, hwnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
|
||||
}
|
||||
NtUserxSwitchToThisWindow(hwnd, bUnknown);
|
||||
}
|
||||
|
||||
|
||||
|
@ -127,7 +114,9 @@ ChildWindowFromPointEx(HWND hwndParent,
|
|||
BOOL WINAPI
|
||||
CloseWindow(HWND hWnd)
|
||||
{
|
||||
return PostMessageW(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
|
||||
/* NOTE: CloseWindow does minimizes, and doesn't close. */
|
||||
SetActiveWindow(hWnd);
|
||||
return ShowWindow(hWnd, SW_SHOWMINIMIZED);
|
||||
}
|
||||
|
||||
FORCEINLINE
|
||||
|
|
Loading…
Reference in a new issue