mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 12:55:43 +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;
|
||||
}
|
||||
|
||||
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
|
||||
UserHasWindowEdge(DWORD Style, DWORD ExStyle)
|
||||
{
|
||||
|
@ -2051,7 +1904,7 @@ co_WinPosSetWindowPos(
|
|||
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)
|
||||
{
|
||||
PREGION RgnUpdate = REGION_LockRgn(Window->hrgnUpdate);
|
||||
|
@ -2340,6 +2193,153 @@ co_WinPosSendSizeMove(PWND Wnd)
|
|||
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!
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue