void wxFrame::Init()
{
+#if wxUSE_MENUS
+ m_hMenu = NULL;
+#endif // wxUSE_MENUS
+
#if wxUSE_TOOLTIPS
m_hwndToolTip = 0;
#endif
- // Data to save/restore when calling ShowFullScreen
- m_fsStatusBarFields = 0;
- m_fsStatusBarHeight = 0;
- m_fsToolBarHeight = 0;
-
m_wasMinimized = false;
}
if ( !wxTopLevelWindow::Create(parent, id, title, pos, size, style, name) )
return false;
- SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
+ SetOwnBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
-#ifdef __SMARTPHONE__
+#if defined(__SMARTPHONE__) && defined(__WXWINCE__)
SetLeftMenu(wxID_EXIT, _("Done"));
#endif
void wxFrame::AttachMenuBar(wxMenuBar *menubar)
{
-#if defined(__SMARTPHONE__)
+#if defined(__SMARTPHONE__) && defined(__WXWINCE__)
wxMenu *autoMenu = NULL;
// Responds to colour changes, and passes event on to children.
void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event)
{
- SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
+ SetOwnBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
Refresh();
#if wxUSE_STATUSBAR
// Pass true to show full screen, false to restore.
bool wxFrame::ShowFullScreen(bool show, long style)
{
+ // TODO-CE: add support for CE
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
if ( IsFullScreen() == show )
return false;
if (show)
{
+ // zap the toolbar, menubar, and statusbar if needed
+ //
+ // TODO: hide commandbar for WINCE_WITH_COMMANDBAR
#if wxUSE_TOOLBAR
-
-#if defined(WINCE_WITH_COMMANDBAR)
- // TODO: hide commandbar
-#else
wxToolBar *theToolBar = GetToolBar();
- if (theToolBar)
- theToolBar->GetSize(NULL, &m_fsToolBarHeight);
-
- // zap the toolbar, menubar, and statusbar
if ((style & wxFULLSCREEN_NOTOOLBAR) && theToolBar)
{
- theToolBar->SetSize(wxDefaultCoord,0);
- theToolBar->Show(false);
+ if ( theToolBar->IsShown() )
+ {
+ theToolBar->SetSize(wxDefaultCoord,0);
+ theToolBar->Show(false);
+ }
+ else // prevent it from being restored later
+ {
+ style &= ~wxFULLSCREEN_NOTOOLBAR;
+ }
}
-#endif // __WXWINCE__
#endif // wxUSE_TOOLBAR
-#if defined(__WXMICROWIN__)
-#elif defined(__WXWINCE__)
- // TODO: make it work for WinCE
-#else
if (style & wxFULLSCREEN_NOMENUBAR)
SetMenu((HWND)GetHWND(), (HMENU) NULL);
-#endif
#if wxUSE_STATUSBAR
wxStatusBar *theStatusBar = GetStatusBar();
- if (theStatusBar)
- theStatusBar->GetSize(NULL, &m_fsStatusBarHeight);
// Save the number of fields in the statusbar
if ((style & wxFULLSCREEN_NOSTATUSBAR) && theStatusBar)
{
- //m_fsStatusBarFields = theStatusBar->GetFieldsCount();
- //SetStatusBar((wxStatusBar*) NULL);
- //delete theStatusBar;
- theStatusBar->Show(false);
+ if ( theStatusBar->IsShown() )
+ theStatusBar->Show(false);
+ else
+ style &= ~wxFULLSCREEN_NOSTATUSBAR;
}
- else
- m_fsStatusBarFields = 0;
#endif // wxUSE_STATUSBAR
}
- else
+ else // restore to normal
{
+ // restore the toolbar, menubar, and statusbar if we had hid them
#if wxUSE_TOOLBAR
-#if defined(WINCE_WITHOUT_COMMANDBAR)
- // TODO: show commandbar
-#else
wxToolBar *theToolBar = GetToolBar();
- // restore the toolbar, menubar, and statusbar
- if (theToolBar && (m_fsStyle & wxFULLSCREEN_NOTOOLBAR))
+ if ((m_fsStyle & wxFULLSCREEN_NOTOOLBAR) && theToolBar)
{
- theToolBar->SetSize(wxDefaultCoord, m_fsToolBarHeight);
theToolBar->Show(true);
}
-#endif // __WXWINCE__
#endif // wxUSE_TOOLBAR
+ if ((m_fsStyle & wxFULLSCREEN_NOMENUBAR) && m_hMenu)
+ ::SetMenu(GetHwnd(), (HMENU)m_hMenu);
+
#if wxUSE_STATUSBAR
- if ( m_fsStyle & wxFULLSCREEN_NOSTATUSBAR )
+ wxStatusBar *theStatusBar = GetStatusBar();
+
+ if ((m_fsStyle & wxFULLSCREEN_NOSTATUSBAR) && theStatusBar)
{
- //CreateStatusBar(m_fsStatusBarFields);
- if (GetStatusBar())
- {
- GetStatusBar()->Show(true);
- PositionStatusBar();
- }
+ theStatusBar->Show(true);
+ PositionStatusBar();
}
#endif // wxUSE_STATUSBAR
-
-#if defined(__WXMICROWIN__)
-#elif defined(__WXWINCE__)
- // TODO: make it work for WinCE
-#else
- if ((m_fsStyle & wxFULLSCREEN_NOMENUBAR) && (m_hMenu != 0))
- SetMenu((HWND)GetHWND(), (HMENU)m_hMenu);
-#endif
}
+#endif // !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
return wxFrameBase::ShowFullScreen(show, style);
}
// on the desktop, but are iconized/restored with it
void wxFrame::IconizeChildFrames(bool bIconize)
{
+ m_iconized = bIconize;
+
for ( wxWindowList::compatibility_iterator node = GetChildren().GetFirst();
node;
node = node->GetNext() )
}
}
-bool wxFrame::HandleSize(int x, int y, WXUINT id)
+bool wxFrame::HandleSize(int WXUNUSED(x), int WXUNUSED(y), WXUINT id)
{
- bool processed = false;
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
-
switch ( id )
{
- case SIZENORMAL:
+ case SIZE_RESTORED:
+ case SIZE_MAXIMIZED:
// only do it it if we were iconized before, otherwise resizing the
// parent frame has a curious side effect of bringing it under it's
// children
IconizeChildFrames(false);
(void)SendIconizeEvent(false);
-
- // fall through
-
- case SIZEFULLSCREEN:
- m_iconized = FALSE;
break;
- case SIZEICONIC:
+ case SIZE_MINIMIZED:
// iconize all child frames too
IconizeChildFrames(true);
-
- (void)SendIconizeEvent();
-
- m_iconized = true;
break;
}
-#endif
+#else
+ wxUnusedVar(id);
+#endif // !__WXWINCE__
if ( !m_iconized )
{
}
}
-#endif
-
-
- processed = wxWindow::HandleSize(x, y, id);
+#endif // WINCE_WITH_COMMANDBAR
}
- return processed;
+ // call the base class version to generate the appropriate events
+ return false;
}
bool wxFrame::HandleCommand(WXWORD id, WXWORD cmd, WXHWND control)
}
#endif // wxUSE_MENUS_NATIVE
-#ifdef __SMARTPHONE__
+#if defined(__SMARTPHONE__) && defined(__WXWINCE__)
// handle here commands from Smartphone menu bar
if ( wxTopLevelWindow::HandleCommand(id, cmd, control ) )
{
return true;
}
-#endif // __SMARTPHONE__
+#endif // __SMARTPHONE__ && __WXWINCE__
if ( ProcessCommand(id) )
{
break;
case WM_EXITMENULOOP:
- processed = HandleMenuLoop(wxEVT_MENU_CLOSE, wParam);
+ processed = HandleMenuLoop(wxEVT_MENU_CLOSE, (WXWORD)wParam);
break;
case WM_QUERYDRAGICON: