]> git.saurik.com Git - wxWidgets.git/blobdiff - src/aui/tabmdi.cpp
don't assume there's always an active wxEventLoop instance
[wxWidgets.git] / src / aui / tabmdi.cpp
index dd9046aef829ebb7f13aae9a758fd09f49d1052a..f7328f7864768e6bab4faceefc6af31992a946eb 100644 (file)
@@ -82,8 +82,9 @@ wxAuiMDIParentFrame::~wxAuiMDIParentFrame()
     wxDELETE(m_pClientWindow);
 
 #if wxUSE_MENUS
+    wxDELETE(m_pMyMenuBar);
     RemoveWindowMenu(GetMenuBar());
-    delete m_pWindowMenu;
+    wxDELETE(m_pWindowMenu);
 #endif // wxUSE_MENUS
 }
 
@@ -166,7 +167,7 @@ void wxAuiMDIParentFrame::SetMenuBar(wxMenuBar* pMenuBar)
     AddWindowMenu(pMenuBar);
 
     wxFrame::SetMenuBar(pMenuBar);
-    m_pMyMenuBar = GetMenuBar();
+    //m_pMyMenuBar = GetMenuBar();
 }
 #endif // wxUSE_MENUS
 
@@ -179,7 +180,7 @@ void wxAuiMDIParentFrame::SetChildMenuBar(wxAuiMDIChildFrame* pChild)
         SetMenuBar(m_pMyMenuBar);
 
         // Make sure we know our menu bar is in use
-        //m_pMyMenuBar = NULL;
+        m_pMyMenuBar = NULL;
     }
      else
     {
@@ -354,6 +355,26 @@ void wxAuiMDIParentFrame::DoGetClientSize(int* width, int* height) const
     wxFrame::DoGetClientSize(width, height);
 }
 
+void wxAuiMDIParentFrame::Tile(wxOrientation orient)
+{
+    wxAuiMDIClientWindow* client_window = GetClientWindow();
+    wxASSERT_MSG(client_window, wxT("Missing MDI Client Window"));
+    
+    int cur_idx = client_window->GetSelection();
+    if (cur_idx == -1)
+        return;
+        
+    if (orient == wxVERTICAL)
+    {
+        client_window->Split(cur_idx, wxLEFT);
+    }
+     else if (orient == wxHORIZONTAL)
+    {
+        client_window->Split(cur_idx, wxTOP);
+    }
+}
+
+
 //-----------------------------------------------------------------------------
 // wxAuiMDIChildFrame
 //-----------------------------------------------------------------------------
@@ -396,6 +417,13 @@ wxAuiMDIChildFrame::wxAuiMDIChildFrame(wxAuiMDIParentFrame *parent,
 
 wxAuiMDIChildFrame::~wxAuiMDIChildFrame()
 {
+    wxAuiMDIParentFrame* pParentFrame = GetMDIParentFrame();
+    if (pParentFrame && pParentFrame->GetActiveChild() == this)
+    {
+        pParentFrame->SetActiveChild(NULL);
+        pParentFrame->SetChildMenuBar(NULL);
+    }
+    
 #if wxUSE_MENUS
     wxDELETE(m_pMenuBar);
 #endif // wxUSE_MENUS