]> git.saurik.com Git - wxWidgets.git/commitdiff
ability to create tab mdi children without activating page
authorBenjamin Williams <bwilliams@kirix.com>
Fri, 10 Nov 2006 08:11:01 +0000 (08:11 +0000)
committerBenjamin Williams <bwilliams@kirix.com>
Fri, 10 Nov 2006 08:11:01 +0000 (08:11 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43262 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/aui/tabmdi.h
src/aui/tabmdi.cpp

index 48275eba397f91a69ff210ae25a8d678e426cfb6..018d4ea8fc612715e92878d3b490f7c56ad149c1 100644 (file)
@@ -222,6 +222,7 @@ protected:
     wxString m_title;
     wxIcon m_icon;
     wxIconBundle m_icon_bundle;
+    bool m_activate_on_create;
 
 #if wxUSE_MENUS
     wxMenuBar* m_pMenuBar;
@@ -255,8 +256,8 @@ public:
 protected:
 
     void PageChanged(int old_selection, int new_selection);
-    void OnPageClose(wxAuiNotebookEvent& event);
-    void OnPageChanged(wxAuiNotebookEvent& event);
+    void OnPageClose(wxAuiNotebookEvent& evt);
+    void OnPageChanged(wxAuiNotebookEvent& evt);
     void OnSize(wxSizeEvent& evt);
 
 private:
index cacd76d01a79a94d85ee9e3eba70a8dd4da7bc87..8680825a531298b1ed578c320b29f86e7a524436 100644 (file)
@@ -380,7 +380,18 @@ wxAuiMDIChildFrame::wxAuiMDIChildFrame(wxAuiMDIParentFrame *parent,
                                        const wxString& name)
 {
     Init();
-    Create(parent, id, title, wxDefaultPosition, size, style, name);
+    
+    // There are two ways to create an tabbed mdi child fram without
+    // making it the active document.  Either Show(false) can be called
+    // before Create() (as is customary on some ports with wxFrame-type
+    // windows), or wxMINIMIZE can be passed in the style flags.  Note that
+    // wxAuiMDIChildFrame is not really derived from wxFrame, as wxMDIChildFrame
+    // is, but those are the expected symantics.  No style flag is passed
+    // onto the panel underneath.
+    if (style & wxMINIMIZE)
+        m_activate_on_create = false;
+        
+    Create(parent, id, title, wxDefaultPosition, size, 0, name);
 }
 
 wxAuiMDIChildFrame::~wxAuiMDIChildFrame()
@@ -401,6 +412,10 @@ bool wxAuiMDIChildFrame::Create(wxAuiMDIParentFrame* parent,
     wxAuiMDIClientWindow* pClientWindow = parent->GetClientWindow();
     wxASSERT_MSG((pClientWindow != (wxWindow*) NULL), wxT("Missing MDI client window."));
 
+    // see comment in constructor
+    if (style & wxMINIMIZE)
+        m_activate_on_create = false;
+
     wxSize cli_size = pClientWindow->GetClientSize();
 
     // create the window off-screen to prevent flicker
@@ -408,7 +423,9 @@ bool wxAuiMDIChildFrame::Create(wxAuiMDIParentFrame* parent,
                    id,
                    wxPoint(cli_size.x+1, cli_size.y+1),
                    size,
-                   style|wxNO_BORDER, name);
+                   wxNO_BORDER, name);
+
+    DoShow(false);
 
     SetMDIParentFrame(parent);
 
@@ -417,9 +434,9 @@ bool wxAuiMDIChildFrame::Create(wxAuiMDIParentFrame* parent,
 
     m_title = title;
 
-    pClientWindow->AddPage(this, title, true);
+    pClientWindow->AddPage(this, title, m_activate_on_create);
     pClientWindow->Refresh();
-
+    
     return true;
 }
 
@@ -604,14 +621,17 @@ wxAuiMDIParentFrame* wxAuiMDIChildFrame::GetMDIParentFrame() const
 
 void wxAuiMDIChildFrame::Init()
 {
+    m_activate_on_create = true;
     m_pMDIParentFrame = NULL;
 #if wxUSE_MENUS
     m_pMenuBar = NULL;
 #endif // wxUSE_MENUS
 }
 
-bool wxAuiMDIChildFrame::Show(bool WXUNUSED(show))
+bool wxAuiMDIChildFrame::Show(bool show)
 {
+    m_activate_on_create = show;
+    
     // do nothing
     return true;
 }
@@ -687,7 +707,7 @@ bool wxAuiMDIClientWindow::CreateClient(wxAuiMDIParentFrame* parent, long style)
     }
 
     wxColour bkcolour = wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE);
-    SetBackgroundColour(bkcolour);
+    SetOwnBackgroundColour(bkcolour);
 
     m_mgr.GetArtProvider()->SetColour(wxAUI_ART_BACKGROUND_COLOUR, bkcolour);