user32: Move MDI child coordinates fixup out of WIN_FixCoordinates.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2022-03-18 14:27:19 +01:00 committed by Alexandre Julliard
parent 338438ecef
commit f2f07d5ba7
1 changed files with 26 additions and 27 deletions

View File

@ -716,35 +716,10 @@ other_process:
static void WIN_FixCoordinates( CREATESTRUCTW *cs, INT *sw)
{
#define IS_DEFAULT(x) ((x) == CW_USEDEFAULT || (x) == (SHORT)0x8000)
POINT pos[2];
if (cs->dwExStyle & WS_EX_MDICHILD)
{
UINT id = 0;
MDI_CalcDefaultChildPos(cs->hwndParent, -1, pos, 0, &id);
if (!(cs->style & WS_POPUP)) cs->hMenu = ULongToHandle(id);
TRACE("MDI child id %04x\n", id);
}
if (cs->style & (WS_CHILD | WS_POPUP))
{
if (cs->dwExStyle & WS_EX_MDICHILD)
{
if (IS_DEFAULT(cs->x))
{
cs->x = pos[0].x;
cs->y = pos[0].y;
}
if (IS_DEFAULT(cs->cx) || !cs->cx) cs->cx = pos[1].x;
if (IS_DEFAULT(cs->cy) || !cs->cy) cs->cy = pos[1].y;
}
else
{
if (IS_DEFAULT(cs->x)) cs->x = cs->y = 0;
if (IS_DEFAULT(cs->cx)) cs->cx = cs->cy = 0;
}
if (IS_DEFAULT(cs->x)) cs->x = cs->y = 0;
if (IS_DEFAULT(cs->cx)) cs->cx = cs->cy = 0;
}
else /* overlapped window */
{
@ -905,6 +880,11 @@ static void dump_window_styles( DWORD style, DWORD exstyle )
#undef DUMPED_EX_STYLES
}
static BOOL is_default_coord( int x )
{
return x == CW_USEDEFAULT || x == 0x8000;
}
/***********************************************************************
* map_dpi_create_struct
*/
@ -971,6 +951,9 @@ HWND WIN_CreateWindowEx( CREATESTRUCTW *cs, LPCWSTR className, HINSTANCE module,
/* Fix the styles for MDI children */
if (cs->dwExStyle & WS_EX_MDICHILD)
{
POINT pos[2];
UINT id = 0;
if (!(win_get_flags( cs->hwndParent ) & WIN_ISMDICLIENT))
{
WARN("WS_EX_MDICHILD, but parent %p is not MDIClient\n", cs->hwndParent);
@ -1029,6 +1012,22 @@ HWND WIN_CreateWindowEx( CREATESTRUCTW *cs, LPCWSTR className, HINSTANCE module,
else NtUserShowWindow( top_child, SW_SHOWNORMAL );
}
}
MDI_CalcDefaultChildPos( cs->hwndParent, -1, pos, 0, &id );
if (!(cs->style & WS_POPUP)) cs->hMenu = ULongToHandle(id);
TRACE( "MDI child id %04x\n", id );
if (cs->style & (WS_CHILD | WS_POPUP))
{
if (is_default_coord( cs->x ))
{
cs->x = pos[0].x;
cs->y = pos[0].y;
}
if (is_default_coord( cs->cx ) || !cs->cx) cs->cx = pos[1].x;
if (is_default_coord( cs->cy ) || !cs->cy) cs->cy = pos[1].y;
}
}
/* Find the parent window */