mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 03:46:38 +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
|
* PROJECT: ReactOS kernel
|
||||||
* PURPOSE: NtUserCallXxx call stubs
|
* PURPOSE: NtUserCallXxx call stubs
|
||||||
* FILE: win32ss/user/ntuser/simplecall.c
|
* 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>
|
#include <win32k.h>
|
||||||
|
@ -505,9 +506,24 @@ NtUserCallTwoParam(
|
||||||
}
|
}
|
||||||
|
|
||||||
case TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW:
|
case TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW:
|
||||||
STUB
|
{
|
||||||
|
HWND hwnd = (HWND)Param1;
|
||||||
Ret = 0;
|
Ret = 0;
|
||||||
|
Window = UserGetWindowObject(hwnd);
|
||||||
|
if (!Window)
|
||||||
|
{
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
if ((BOOL)Param2)
|
||||||
|
{
|
||||||
|
if (Window->style & WS_MINIMIZE)
|
||||||
|
{
|
||||||
|
UserPostMessage(hwnd, WM_SYSCOMMAND, SC_RESTORE, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
UserSetActiveWindow(Window);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case TWOPARAM_ROUTINE_SETCARETPOS:
|
case TWOPARAM_ROUTINE_SETCARETPOS:
|
||||||
Ret = (DWORD_PTR)co_IntSetCaretPos((int)Param1, (int)Param2);
|
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);
|
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)
|
EXTINLINE BOOL NtUserxShowOwnedPopups(HWND hWnd, BOOL fShow)
|
||||||
{
|
{
|
||||||
return (BOOL)NtUserCallTwoParam((DWORD_PTR)hWnd, fShow, TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS);
|
return (BOOL)NtUserCallTwoParam((DWORD_PTR)hWnd, fShow, TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS);
|
||||||
|
|
|
@ -79,22 +79,9 @@ BringWindowToTop(HWND hWnd)
|
||||||
|
|
||||||
|
|
||||||
VOID WINAPI
|
VOID WINAPI
|
||||||
SwitchToThisWindow(HWND hwnd, BOOL fAltTab)
|
SwitchToThisWindow(HWND hwnd, BOOL bUnknown)
|
||||||
{
|
{
|
||||||
HWND hwndFG;
|
NtUserxSwitchToThisWindow(hwnd, bUnknown);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -127,7 +114,9 @@ ChildWindowFromPointEx(HWND hwndParent,
|
||||||
BOOL WINAPI
|
BOOL WINAPI
|
||||||
CloseWindow(HWND hWnd)
|
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
|
FORCEINLINE
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue