Fixed sizing and positioning.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36688 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Neis 2006-01-04 23:27:16 +00:00
parent 2240212390
commit 53758b0fc1

View File

@ -421,6 +421,9 @@ bool wxTopLevelWindowOS2::CreateDialog( ULONG ulDlgTemplate,
return false;
}
// Convert to OS/2 coordinates
nY = GetOS2ParentHeight(pParent) - nY - nHeight;
::WinSetWindowPos( GetHwnd()
,HWND_TOP
,nX
@ -530,17 +533,49 @@ bool wxTopLevelWindowOS2::CreateFrame( const wxString& rsTitle,
// Now size everything. If adding a menu the client will need to be resized.
//
if (pParent)
if (!OS2GetCreateWindowCoords( rPos
,rSize
,nX
,nY
,nWidth
,nHeight
))
{
nY = pParent->GetSize().y - (nY + nHeight);
nX = nWidth = (int)CW_USEDEFAULT;
}
else
{
RECTL vRect;
::WinQueryWindowRect(HWND_DESKTOP, &vRect);
nY = vRect.yTop - (nY + nHeight);
//
// We can't use CW_USEDEFAULT here as we're not calling CreateWindow()
// and passing CW_USEDEFAULT to MoveWindow() results in resizing the
// window to (0, 0) size which breaks quite a lot of things, e.g. the
// sizer calculation in wxSizer::Fit()
//
if (nWidth == (int)CW_USEDEFAULT)
{
//
// The exact number doesn't matter, the dialog will be resized
// again soon anyhow but it should be big enough to allow
// calculation relying on "totalSize - clientSize > 0" work, i.e.
// at least greater than the title bar height
//
nWidth = nHeight = 100;
}
if (nX == (int)CW_USEDEFAULT)
{
//
// Centre it on the screen for now - what else can we do?
// TODO: We could try FCF_SHELLPOSITION but it will require moving
// things around a bit.
//
wxSize vSizeDpy = wxGetDisplaySize();
nX = (vSizeDpy.x - nWidth) / 2;
nY = (vSizeDpy.y - nHeight) / 2;
}
// Convert to OS/2 coordinates
nY = GetOS2ParentHeight(pParent) - nY - nHeight;
if (!::WinSetWindowPos( m_hFrame
,HWND_TOP
,nX
@ -753,10 +788,6 @@ bool wxTopLevelWindowOS2::Show( bool bShow )
::WinQueryWindowPos(m_hWnd, &vSwp);
::WinEnableWindow(m_hFrame, TRUE);
//
// Deal with children
//
MoveChildren(m_vSwpClient.cy - vSwp.cy);
vEvent.SetEventObject(this);
GetEventHandler()->ProcessEvent(vEvent);
}