// Get the client window
inline wxMDIClientWindow *GetClientWindow() const { return m_clientWindow; };
+ // Get rect to be used to center top-level children
+ virtual void GetRectForTopLevelChildren(int *x, int *y, int *w, int *h);
// Create the client window class (don't Create the window,
// just return a new class)
void OnCloseWindow(wxCloseEvent& event);
void OnSize(wxSizeEvent& WXUNUSED(event)) { DoLayout(); }
+ // Get rect to be used to center top-level children
+ virtual void GetRectForTopLevelChildren(int *x, int *y, int *w, int *h);
+
// this should go away, but for now it's called from docview.cpp,
// so should be there for all platforms
void OnActivate(wxActivateEvent &WXUNUSED(event)) { }
// wxTopLevelWindow geometry
// ----------------------------------------------------------------------------
+void wxTopLevelWindowBase::GetRectForTopLevelChildren(int *x, int *y, int *w, int *h)
+{
+ GetPosition(x,y);
+ GetSize(w,h);
+}
+
wxSize wxTopLevelWindowBase::GetMaxSize() const
{
wxSize size( GetMaxWidth(), GetMaxHeight() );
int widthParent, heightParent;
wxWindow *parent = NULL;
+ wxTopLevelWindow *winTop = NULL;
if ( !(direction & wxCENTRE_ON_SCREEN) )
{
// Windows, for example, this places it completely off the screen
if ( parent )
{
- wxTopLevelWindow *winTop = wxDynamicCast(parent, wxTopLevelWindow);
+ winTop = wxDynamicCast(parent, wxTopLevelWindow);
if ( winTop && winTop->IsIconized() )
{
+ winTop = NULL;
parent = NULL;
}
}
{
if ( IsTopLevel() )
{
- // centre on the parent
- parent->GetSize(&widthParent, &heightParent);
+ if(winTop)
+ winTop->GetRectForTopLevelChildren(&posParent.x, &posParent.y, &widthParent, &heightParent);
+ else
+ {
+ // centre on the parent
+ parent->GetSize(&widthParent, &heightParent);
- // adjust to the parents position
- posParent = parent->GetPosition();
+ // adjust to the parents position
+ posParent = parent->GetPosition();
+ }
}
else
{
wxFrame::SetMenuBar( menu_bar ) ;
}
+void wxMDIParentFrame::GetRectForTopLevelChildren(int *x, int *y, int *w, int *h)
+{
+ if(x)
+ *x = 0;
+ if(y)
+ *y = 0;
+ wxDisplaySize(w,h);
+}
+
void wxMDIParentFrame::MacActivate(long timestamp, bool activating)
{
wxLogDebug(wxT("MDI PARENT=%p MacActivate(0x%08lx,%s)"),this,timestamp,activating?wxT("ACTIV"):wxT("deact"));