#include "wx/frame.h"
#include "wx/control.h"
#include "wx/containr.h" // wxSetFocusToChild()
+ #include "wx/settings.h"
#endif //WX_PRECOMP
#include "wx/module.h" // wxSetFocusToChild()
nX = (vSizeDpy.x - nWidth) / 2;
nY = (vSizeDpy.y - nHeight) / 2;
}
- m_backgroundColour.Set(wxString(wxT("LIGHT GREY")));
+ SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
LONG lColor = (LONG)m_backgroundColour.GetPixel();
return false;
}
+ // Convert to OS/2 coordinates
+ nY = GetOS2ParentHeight(pParent) - nY - nHeight;
+
::WinSetWindowPos( GetHwnd()
,HWND_TOP
,nX
wxAssociateWinWithHandle(m_hWnd, this);
wxAssociateWinWithHandle(m_hFrame, this);
- m_backgroundColour.Set(wxString(wxT("MEDIUM GREY")));
+ SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
LONG lColor = (LONG)m_backgroundColour.GetPixel();
// 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
+
+ //
+ // 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)
{
- RECTL vRect;
+ //
+ // 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();
- ::WinQueryWindowRect(HWND_DESKTOP, &vRect);
- nY = vRect.yTop - (nY + nHeight);
+ 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
::WinQueryWindowPos(m_hWnd, &vSwp);
::WinEnableWindow(m_hFrame, TRUE);
- //
- // Deal with children
- //
- MoveChildren(m_vSwpClient.cy - vSwp.cy);
vEvent.SetEventObject(this);
GetEventHandler()->ProcessEvent(vEvent);
}