+bool wxFrame::ShowFullScreen(bool show, long style)
+{
+ if (!wxFrameBase::ShowFullScreen(show, style))
+ return false;
+
+ wxWindow* const bar[] = {
+#if wxUSE_MENUS
+ m_frameMenuBar,
+#else
+ NULL,
+#endif
+#if wxUSE_TOOLBAR
+ m_frameToolBar,
+#else
+ NULL,
+#endif
+#if wxUSE_STATUSBAR
+ m_frameStatusBar,
+#else
+ NULL,
+#endif
+ };
+ const long fsNoBar[] = {
+ wxFULLSCREEN_NOMENUBAR, wxFULLSCREEN_NOTOOLBAR, wxFULLSCREEN_NOSTATUSBAR
+ };
+ for (int i = 0; i < 3; i++)
+ {
+ if (show)
+ {
+ if (bar[i] && (style & fsNoBar[i]))
+ {
+ if (bar[i]->IsShown())
+ bar[i]->Show(false);
+ else
+ style &= ~fsNoBar[i];
+ }
+ }
+ else
+ {
+ if (bar[i] && (m_fsSaveFlag & fsNoBar[i]))
+ bar[i]->Show(true);
+ }
+ }
+ if (show)
+ m_fsSaveFlag = style;
+
+ return true;
+}
+