+void wxAuiManager::MaximizePane(wxAuiPaneInfo& pane_info)
+{
+ int i, pane_count;
+
+ // un-maximize and hide all other panes
+ for (i = 0, pane_count = m_panes.GetCount(); i < pane_count; ++i)
+ {
+ wxAuiPaneInfo& p = m_panes.Item(i);
+ if (!p.IsToolbar())
+ {
+ p.Restore();
+
+ // save hidden state
+ p.SetFlag(wxAuiPaneInfo::savedHiddenState,
+ p.HasFlag(wxAuiPaneInfo::optionHidden));
+
+ // hide the pane, because only the newly
+ // maximized pane should show
+ p.Hide();
+ }
+ }
+
+ // mark ourselves maximized
+ pane_info.Maximize();
+ pane_info.Show();
+ m_has_maximized = true;
+
+ // last, show the window
+ if (pane_info.window && !pane_info.window->IsShown())
+ {
+ pane_info.window->Show(true);
+ }
+}
+
+void wxAuiManager::RestorePane(wxAuiPaneInfo& pane_info)
+{
+ int i, pane_count;
+
+ // restore all the panes
+ for (i = 0, pane_count = m_panes.GetCount(); i < pane_count; ++i)
+ {
+ wxAuiPaneInfo& p = m_panes.Item(i);
+ if (!p.IsToolbar())
+ {
+ p.SetFlag(wxAuiPaneInfo::optionHidden,
+ p.HasFlag(wxAuiPaneInfo::savedHiddenState));
+ }
+ }
+
+ // mark ourselves non-maximized
+ pane_info.Restore();
+ m_has_maximized = false;
+
+ // last, show the window
+ if (pane_info.window && !pane_info.window->IsShown())
+ {
+ pane_info.window->Show(true);
+ }
+}
+
+void wxAuiManager::RestoreMaximizedPane()
+{
+ int i, pane_count;
+
+ // restore all the panes
+ for (i = 0, pane_count = m_panes.GetCount(); i < pane_count; ++i)
+ {
+ wxAuiPaneInfo& p = m_panes.Item(i);
+ if (p.IsMaximized())
+ {
+ RestorePane(p);
+ break;
+ }
+ }
+}
+