// implementation
// ============================================================================
-WX_DELEGATE_TO_CONTROL_CONTAINER(wxPanel, m_container)
+WX_DELEGATE_TO_CONTROL_CONTAINER(wxPanel)
// ----------------------------------------------------------------------------
// wxPanel creation
void wxPanel::Init()
{
- m_container = new wxControlContainer(this);
+ m_container.SetContainerWindow(this);
}
bool wxPanel::Create(wxWindow *parent, wxWindowID id,
wxPanel::~wxPanel()
{
- delete m_container;
}
-// ----------------------------------------------------------------------------
-// misc
-// ----------------------------------------------------------------------------
-
void wxPanel::InitDialog()
{
wxInitDialogEvent event(GetId());
GetEventHandler()->ProcessEvent(event);
}
+// ----------------------------------------------------------------------------
+// event handlers
+// ----------------------------------------------------------------------------
+
// Responds to colour changes, and passes event on to children.
void wxPanel::OnSysColourChanged(wxSysColourChangedEvent& event)
{
- SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE));
+ SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE));
Refresh();
// Propagate the event to the non-top-level children
wxWindow::OnSysColourChanged(event);
}
-void wxPanel::OnSize(wxSizeEvent& WXUNUSED(event))
+void wxPanel::OnSize(wxSizeEvent& event)
{
#if wxUSE_CONSTRAINTS
if (GetAutoLayout())
Layout();
+#if defined(__WXPM__)
+ else
+ {
+ // Need to properly move child windows under OS/2
+
+ PSWP pWinSwp = GetSwp();
+
+ if (pWinSwp->cx == 0 && pWinSwp->cy == 0 && pWinSwp->fl == 0)
+ {
+ // Uninitialized
+
+ ::WinQueryWindowPos(GetHWND(), pWinSwp);
+ }
+ else
+ {
+ SWP vSwp;
+ int nYDiff;
+
+ ::WinQueryWindowPos(GetHWND(), &vSwp);
+ nYDiff = pWinSwp->cy - vSwp.cy;
+ MoveChildren(nYDiff);
+ pWinSwp->cx = vSwp.cx;
+ pWinSwp->cy = vSwp.cy;
+ }
+ }
+#endif
#endif // wxUSE_CONSTRAINTS
+
+ event.Skip();
}