mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 22:05:49 +00:00
[NtUser]
- Move functions around. svn path=/trunk/; revision=74015
This commit is contained in:
parent
d25e21c753
commit
3238412b08
1 changed files with 148 additions and 148 deletions
|
@ -837,153 +837,6 @@ WinPosFindIconPos(PWND Window, POINT *Pos)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT FASTCALL
|
|
||||||
co_WinPosMinMaximize(PWND Wnd, UINT ShowFlag, RECT* NewPos)
|
|
||||||
{
|
|
||||||
POINT Size;
|
|
||||||
WINDOWPLACEMENT wpl;
|
|
||||||
LONG old_style;
|
|
||||||
UINT SwpFlags = 0;
|
|
||||||
|
|
||||||
ASSERT_REFS_CO(Wnd);
|
|
||||||
|
|
||||||
wpl.length = sizeof(wpl);
|
|
||||||
IntGetWindowPlacement( Wnd, &wpl );
|
|
||||||
|
|
||||||
if (co_HOOK_CallHooks( WH_CBT, HCBT_MINMAX, (WPARAM)Wnd->head.h, ShowFlag))
|
|
||||||
{
|
|
||||||
ERR("WinPosMinMaximize WH_CBT Call Hook return!\n");
|
|
||||||
return SWP_NOSIZE | SWP_NOMOVE;
|
|
||||||
}
|
|
||||||
if (Wnd->style & WS_MINIMIZE)
|
|
||||||
{
|
|
||||||
switch (ShowFlag)
|
|
||||||
{
|
|
||||||
case SW_MINIMIZE:
|
|
||||||
case SW_SHOWMINNOACTIVE:
|
|
||||||
case SW_SHOWMINIMIZED:
|
|
||||||
case SW_FORCEMINIMIZE:
|
|
||||||
return SWP_NOSIZE | SWP_NOMOVE;
|
|
||||||
}
|
|
||||||
if (!co_IntSendMessageNoWait(Wnd->head.h, WM_QUERYOPEN, 0, 0))
|
|
||||||
{
|
|
||||||
return(SWP_NOSIZE | SWP_NOMOVE);
|
|
||||||
}
|
|
||||||
SwpFlags |= SWP_NOCOPYBITS;
|
|
||||||
}
|
|
||||||
switch (ShowFlag)
|
|
||||||
{
|
|
||||||
case SW_MINIMIZE:
|
|
||||||
case SW_SHOWMINNOACTIVE:
|
|
||||||
case SW_SHOWMINIMIZED:
|
|
||||||
case SW_FORCEMINIMIZE:
|
|
||||||
{
|
|
||||||
//ERR("MinMaximize Minimize\n");
|
|
||||||
if (Wnd->style & WS_MAXIMIZE)
|
|
||||||
{
|
|
||||||
Wnd->InternalPos.flags |= WPF_RESTORETOMAXIMIZED;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Wnd->InternalPos.flags &= ~WPF_RESTORETOMAXIMIZED;
|
|
||||||
}
|
|
||||||
|
|
||||||
old_style = IntSetStyle( Wnd, WS_MINIMIZE, WS_MAXIMIZE );
|
|
||||||
|
|
||||||
co_UserRedrawWindow(Wnd, NULL, 0, RDW_VALIDATE | RDW_NOERASE | RDW_NOINTERNALPAINT);
|
|
||||||
|
|
||||||
if (!(Wnd->InternalPos.flags & WPF_SETMINPOSITION))
|
|
||||||
Wnd->InternalPos.flags &= ~WPF_MININIT;
|
|
||||||
|
|
||||||
WinPosFindIconPos(Wnd, &wpl.ptMinPosition);
|
|
||||||
|
|
||||||
/*if (!(old_style & WS_MINIMIZE))
|
|
||||||
{
|
|
||||||
SwpFlags |= SWP_STATECHANGED;
|
|
||||||
IntShowOwnedPopups(Wnd, FALSE);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
RECTL_vSetRect(NewPos, wpl.ptMinPosition.x, wpl.ptMinPosition.y,
|
|
||||||
wpl.ptMinPosition.x + UserGetSystemMetrics(SM_CXMINIMIZED),
|
|
||||||
wpl.ptMinPosition.y + UserGetSystemMetrics(SM_CYMINIMIZED));
|
|
||||||
SwpFlags |= SWP_NOCOPYBITS;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case SW_MAXIMIZE:
|
|
||||||
{
|
|
||||||
//ERR("MinMaximize Maximize\n");
|
|
||||||
if ((Wnd->style & WS_MAXIMIZE) && (Wnd->style & WS_VISIBLE))
|
|
||||||
{
|
|
||||||
SwpFlags = SWP_NOSIZE | SWP_NOMOVE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
co_WinPosGetMinMaxInfo(Wnd, &Size, &wpl.ptMaxPosition, NULL, NULL);
|
|
||||||
|
|
||||||
/*ERR("Maximize: %d,%d %dx%d\n",
|
|
||||||
wpl.ptMaxPosition.x, wpl.ptMaxPosition.y, Size.x, Size.y);
|
|
||||||
*/
|
|
||||||
old_style = IntSetStyle( Wnd, WS_MAXIMIZE, WS_MINIMIZE );
|
|
||||||
/*if (old_style & WS_MINIMIZE)
|
|
||||||
{
|
|
||||||
IntShowOwnedPopups(Wnd, TRUE);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
if (!(old_style & WS_MAXIMIZE)) SwpFlags |= SWP_STATECHANGED;
|
|
||||||
RECTL_vSetRect(NewPos, wpl.ptMaxPosition.x, wpl.ptMaxPosition.y,
|
|
||||||
//wpl.ptMaxPosition.x + Size.x, wpl.ptMaxPosition.y + Size.y);
|
|
||||||
Size.x, Size.y);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case SW_SHOWNOACTIVATE:
|
|
||||||
Wnd->InternalPos.flags &= ~WPF_RESTORETOMAXIMIZED;
|
|
||||||
/* fall through */
|
|
||||||
case SW_SHOWNORMAL:
|
|
||||||
case SW_RESTORE:
|
|
||||||
case SW_SHOWDEFAULT: /* FIXME: should have its own handler */
|
|
||||||
{
|
|
||||||
//ERR("MinMaximize Restore\n");
|
|
||||||
old_style = IntSetStyle( Wnd, 0, WS_MINIMIZE | WS_MAXIMIZE );
|
|
||||||
if (old_style & WS_MINIMIZE)
|
|
||||||
{
|
|
||||||
//IntShowOwnedPopups(Wnd, TRUE);
|
|
||||||
|
|
||||||
if (Wnd->InternalPos.flags & WPF_RESTORETOMAXIMIZED)
|
|
||||||
{
|
|
||||||
co_WinPosGetMinMaxInfo(Wnd, &Size, &wpl.ptMaxPosition, NULL, NULL);
|
|
||||||
IntSetStyle( Wnd, WS_MAXIMIZE, 0 );
|
|
||||||
SwpFlags |= SWP_STATECHANGED;
|
|
||||||
RECTL_vSetRect(NewPos, wpl.ptMaxPosition.x, wpl.ptMaxPosition.y,
|
|
||||||
wpl.ptMaxPosition.x + Size.x, wpl.ptMaxPosition.y + Size.y);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*NewPos = wpl.rcNormalPosition;
|
|
||||||
NewPos->right -= NewPos->left;
|
|
||||||
NewPos->bottom -= NewPos->top;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!(old_style & WS_MAXIMIZE))
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
SwpFlags |= SWP_STATECHANGED;
|
|
||||||
Wnd->InternalPos.flags &= ~WPF_RESTORETOMAXIMIZED;
|
|
||||||
*NewPos = wpl.rcNormalPosition;
|
|
||||||
NewPos->right -= NewPos->left;
|
|
||||||
NewPos->bottom -= NewPos->top;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return SwpFlags;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
UserHasWindowEdge(DWORD Style, DWORD ExStyle)
|
UserHasWindowEdge(DWORD Style, DWORD ExStyle)
|
||||||
{
|
{
|
||||||
|
@ -2051,7 +1904,7 @@ co_WinPosSetWindowPos(
|
||||||
REGION_Delete(VisBeforeJustClient);
|
REGION_Delete(VisBeforeJustClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* No use in copying bits which are in the update region. */
|
/* Now use in copying bits which are in the update region. */
|
||||||
if (Window->hrgnUpdate != NULL)
|
if (Window->hrgnUpdate != NULL)
|
||||||
{
|
{
|
||||||
PREGION RgnUpdate = REGION_LockRgn(Window->hrgnUpdate);
|
PREGION RgnUpdate = REGION_LockRgn(Window->hrgnUpdate);
|
||||||
|
@ -2340,6 +2193,153 @@ co_WinPosSendSizeMove(PWND Wnd)
|
||||||
IntEngWindowChanged(Wnd, WOC_RGN_CLIENT);
|
IntEngWindowChanged(Wnd, WOC_RGN_CLIENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UINT FASTCALL
|
||||||
|
co_WinPosMinMaximize(PWND Wnd, UINT ShowFlag, RECT* NewPos)
|
||||||
|
{
|
||||||
|
POINT Size;
|
||||||
|
WINDOWPLACEMENT wpl;
|
||||||
|
LONG old_style;
|
||||||
|
UINT SwpFlags = 0;
|
||||||
|
|
||||||
|
ASSERT_REFS_CO(Wnd);
|
||||||
|
|
||||||
|
wpl.length = sizeof(wpl);
|
||||||
|
IntGetWindowPlacement( Wnd, &wpl );
|
||||||
|
|
||||||
|
if (co_HOOK_CallHooks( WH_CBT, HCBT_MINMAX, (WPARAM)Wnd->head.h, ShowFlag))
|
||||||
|
{
|
||||||
|
ERR("WinPosMinMaximize WH_CBT Call Hook return!\n");
|
||||||
|
return SWP_NOSIZE | SWP_NOMOVE;
|
||||||
|
}
|
||||||
|
if (Wnd->style & WS_MINIMIZE)
|
||||||
|
{
|
||||||
|
switch (ShowFlag)
|
||||||
|
{
|
||||||
|
case SW_MINIMIZE:
|
||||||
|
case SW_SHOWMINNOACTIVE:
|
||||||
|
case SW_SHOWMINIMIZED:
|
||||||
|
case SW_FORCEMINIMIZE:
|
||||||
|
return SWP_NOSIZE | SWP_NOMOVE;
|
||||||
|
}
|
||||||
|
if (!co_IntSendMessageNoWait(Wnd->head.h, WM_QUERYOPEN, 0, 0))
|
||||||
|
{
|
||||||
|
return(SWP_NOSIZE | SWP_NOMOVE);
|
||||||
|
}
|
||||||
|
SwpFlags |= SWP_NOCOPYBITS;
|
||||||
|
}
|
||||||
|
switch (ShowFlag)
|
||||||
|
{
|
||||||
|
case SW_MINIMIZE:
|
||||||
|
case SW_SHOWMINNOACTIVE:
|
||||||
|
case SW_SHOWMINIMIZED:
|
||||||
|
case SW_FORCEMINIMIZE:
|
||||||
|
{
|
||||||
|
//ERR("MinMaximize Minimize\n");
|
||||||
|
if (Wnd->style & WS_MAXIMIZE)
|
||||||
|
{
|
||||||
|
Wnd->InternalPos.flags |= WPF_RESTORETOMAXIMIZED;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Wnd->InternalPos.flags &= ~WPF_RESTORETOMAXIMIZED;
|
||||||
|
}
|
||||||
|
|
||||||
|
old_style = IntSetStyle( Wnd, WS_MINIMIZE, WS_MAXIMIZE );
|
||||||
|
|
||||||
|
co_UserRedrawWindow(Wnd, NULL, 0, RDW_VALIDATE | RDW_NOERASE | RDW_NOINTERNALPAINT);
|
||||||
|
|
||||||
|
if (!(Wnd->InternalPos.flags & WPF_SETMINPOSITION))
|
||||||
|
Wnd->InternalPos.flags &= ~WPF_MININIT;
|
||||||
|
|
||||||
|
WinPosFindIconPos(Wnd, &wpl.ptMinPosition);
|
||||||
|
|
||||||
|
/*if (!(old_style & WS_MINIMIZE))
|
||||||
|
{
|
||||||
|
SwpFlags |= SWP_STATECHANGED;
|
||||||
|
IntShowOwnedPopups(Wnd, FALSE);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
RECTL_vSetRect(NewPos, wpl.ptMinPosition.x, wpl.ptMinPosition.y,
|
||||||
|
wpl.ptMinPosition.x + UserGetSystemMetrics(SM_CXMINIMIZED),
|
||||||
|
wpl.ptMinPosition.y + UserGetSystemMetrics(SM_CYMINIMIZED));
|
||||||
|
SwpFlags |= SWP_NOCOPYBITS;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case SW_MAXIMIZE:
|
||||||
|
{
|
||||||
|
//ERR("MinMaximize Maximize\n");
|
||||||
|
if ((Wnd->style & WS_MAXIMIZE) && (Wnd->style & WS_VISIBLE))
|
||||||
|
{
|
||||||
|
SwpFlags = SWP_NOSIZE | SWP_NOMOVE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
co_WinPosGetMinMaxInfo(Wnd, &Size, &wpl.ptMaxPosition, NULL, NULL);
|
||||||
|
|
||||||
|
/*ERR("Maximize: %d,%d %dx%d\n",
|
||||||
|
wpl.ptMaxPosition.x, wpl.ptMaxPosition.y, Size.x, Size.y);
|
||||||
|
*/
|
||||||
|
old_style = IntSetStyle( Wnd, WS_MAXIMIZE, WS_MINIMIZE );
|
||||||
|
/*if (old_style & WS_MINIMIZE)
|
||||||
|
{
|
||||||
|
IntShowOwnedPopups(Wnd, TRUE);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
if (!(old_style & WS_MAXIMIZE)) SwpFlags |= SWP_STATECHANGED;
|
||||||
|
RECTL_vSetRect(NewPos, wpl.ptMaxPosition.x, wpl.ptMaxPosition.y,
|
||||||
|
//wpl.ptMaxPosition.x + Size.x, wpl.ptMaxPosition.y + Size.y);
|
||||||
|
Size.x, Size.y);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case SW_SHOWNOACTIVATE:
|
||||||
|
Wnd->InternalPos.flags &= ~WPF_RESTORETOMAXIMIZED;
|
||||||
|
/* fall through */
|
||||||
|
case SW_SHOWNORMAL:
|
||||||
|
case SW_RESTORE:
|
||||||
|
case SW_SHOWDEFAULT: /* FIXME: should have its own handler */
|
||||||
|
{
|
||||||
|
//ERR("MinMaximize Restore\n");
|
||||||
|
old_style = IntSetStyle( Wnd, 0, WS_MINIMIZE | WS_MAXIMIZE );
|
||||||
|
if (old_style & WS_MINIMIZE)
|
||||||
|
{
|
||||||
|
//IntShowOwnedPopups(Wnd, TRUE);
|
||||||
|
|
||||||
|
if (Wnd->InternalPos.flags & WPF_RESTORETOMAXIMIZED)
|
||||||
|
{
|
||||||
|
co_WinPosGetMinMaxInfo(Wnd, &Size, &wpl.ptMaxPosition, NULL, NULL);
|
||||||
|
IntSetStyle( Wnd, WS_MAXIMIZE, 0 );
|
||||||
|
SwpFlags |= SWP_STATECHANGED;
|
||||||
|
RECTL_vSetRect(NewPos, wpl.ptMaxPosition.x, wpl.ptMaxPosition.y,
|
||||||
|
wpl.ptMaxPosition.x + Size.x, wpl.ptMaxPosition.y + Size.y);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*NewPos = wpl.rcNormalPosition;
|
||||||
|
NewPos->right -= NewPos->left;
|
||||||
|
NewPos->bottom -= NewPos->top;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!(old_style & WS_MAXIMIZE))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
SwpFlags |= SWP_STATECHANGED;
|
||||||
|
Wnd->InternalPos.flags &= ~WPF_RESTORETOMAXIMIZED;
|
||||||
|
*NewPos = wpl.rcNormalPosition;
|
||||||
|
NewPos->right -= NewPos->left;
|
||||||
|
NewPos->bottom -= NewPos->top;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SwpFlags;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
ShowWindow does not set SWP_FRAMECHANGED!!! Fix wine msg test_SetParent:WmSetParentSeq_2:23 wParam bits!
|
ShowWindow does not set SWP_FRAMECHANGED!!! Fix wine msg test_SetParent:WmSetParentSeq_2:23 wParam bits!
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue