ability to create tab mdi children without activating page
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43262 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -222,6 +222,7 @@ protected:
|
|||||||
wxString m_title;
|
wxString m_title;
|
||||||
wxIcon m_icon;
|
wxIcon m_icon;
|
||||||
wxIconBundle m_icon_bundle;
|
wxIconBundle m_icon_bundle;
|
||||||
|
bool m_activate_on_create;
|
||||||
|
|
||||||
#if wxUSE_MENUS
|
#if wxUSE_MENUS
|
||||||
wxMenuBar* m_pMenuBar;
|
wxMenuBar* m_pMenuBar;
|
||||||
@@ -255,8 +256,8 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
|
|
||||||
void PageChanged(int old_selection, int new_selection);
|
void PageChanged(int old_selection, int new_selection);
|
||||||
void OnPageClose(wxAuiNotebookEvent& event);
|
void OnPageClose(wxAuiNotebookEvent& evt);
|
||||||
void OnPageChanged(wxAuiNotebookEvent& event);
|
void OnPageChanged(wxAuiNotebookEvent& evt);
|
||||||
void OnSize(wxSizeEvent& evt);
|
void OnSize(wxSizeEvent& evt);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -380,7 +380,18 @@ wxAuiMDIChildFrame::wxAuiMDIChildFrame(wxAuiMDIParentFrame *parent,
|
|||||||
const wxString& name)
|
const wxString& name)
|
||||||
{
|
{
|
||||||
Init();
|
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()
|
wxAuiMDIChildFrame::~wxAuiMDIChildFrame()
|
||||||
@@ -401,6 +412,10 @@ bool wxAuiMDIChildFrame::Create(wxAuiMDIParentFrame* parent,
|
|||||||
wxAuiMDIClientWindow* pClientWindow = parent->GetClientWindow();
|
wxAuiMDIClientWindow* pClientWindow = parent->GetClientWindow();
|
||||||
wxASSERT_MSG((pClientWindow != (wxWindow*) NULL), wxT("Missing MDI client window."));
|
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();
|
wxSize cli_size = pClientWindow->GetClientSize();
|
||||||
|
|
||||||
// create the window off-screen to prevent flicker
|
// create the window off-screen to prevent flicker
|
||||||
@@ -408,7 +423,9 @@ bool wxAuiMDIChildFrame::Create(wxAuiMDIParentFrame* parent,
|
|||||||
id,
|
id,
|
||||||
wxPoint(cli_size.x+1, cli_size.y+1),
|
wxPoint(cli_size.x+1, cli_size.y+1),
|
||||||
size,
|
size,
|
||||||
style|wxNO_BORDER, name);
|
wxNO_BORDER, name);
|
||||||
|
|
||||||
|
DoShow(false);
|
||||||
|
|
||||||
SetMDIParentFrame(parent);
|
SetMDIParentFrame(parent);
|
||||||
|
|
||||||
@@ -417,9 +434,9 @@ bool wxAuiMDIChildFrame::Create(wxAuiMDIParentFrame* parent,
|
|||||||
|
|
||||||
m_title = title;
|
m_title = title;
|
||||||
|
|
||||||
pClientWindow->AddPage(this, title, true);
|
pClientWindow->AddPage(this, title, m_activate_on_create);
|
||||||
pClientWindow->Refresh();
|
pClientWindow->Refresh();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -604,14 +621,17 @@ wxAuiMDIParentFrame* wxAuiMDIChildFrame::GetMDIParentFrame() const
|
|||||||
|
|
||||||
void wxAuiMDIChildFrame::Init()
|
void wxAuiMDIChildFrame::Init()
|
||||||
{
|
{
|
||||||
|
m_activate_on_create = true;
|
||||||
m_pMDIParentFrame = NULL;
|
m_pMDIParentFrame = NULL;
|
||||||
#if wxUSE_MENUS
|
#if wxUSE_MENUS
|
||||||
m_pMenuBar = NULL;
|
m_pMenuBar = NULL;
|
||||||
#endif // wxUSE_MENUS
|
#endif // wxUSE_MENUS
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxAuiMDIChildFrame::Show(bool WXUNUSED(show))
|
bool wxAuiMDIChildFrame::Show(bool show)
|
||||||
{
|
{
|
||||||
|
m_activate_on_create = show;
|
||||||
|
|
||||||
// do nothing
|
// do nothing
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -687,7 +707,7 @@ bool wxAuiMDIClientWindow::CreateClient(wxAuiMDIParentFrame* parent, long style)
|
|||||||
}
|
}
|
||||||
|
|
||||||
wxColour bkcolour = wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE);
|
wxColour bkcolour = wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE);
|
||||||
SetBackgroundColour(bkcolour);
|
SetOwnBackgroundColour(bkcolour);
|
||||||
|
|
||||||
m_mgr.GetArtProvider()->SetColour(wxAUI_ART_BACKGROUND_COLOUR, bkcolour);
|
m_mgr.GetArtProvider()->SetColour(wxAUI_ART_BACKGROUND_COLOUR, bkcolour);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user