X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cbe874bd32f35beb3ed8d019c5a24df21a219f8f..767e3be0fa755e435a070d145fa623e36762d7a8:/src/msw/frame.cpp diff --git a/src/msw/frame.cpp b/src/msw/frame.cpp index 0fd73e50bc..6a1c68a3ec 100644 --- a/src/msw/frame.cpp +++ b/src/msw/frame.cpp @@ -173,11 +173,6 @@ void wxFrame::Init() m_hwndToolTip = 0; #endif - // Data to save/restore when calling ShowFullScreen - m_fsStatusBarFields = 0; - m_fsStatusBarHeight = 0; - m_fsToolBarHeight = 0; - m_wasMinimized = false; } @@ -194,7 +189,7 @@ bool wxFrame::Create(wxWindow *parent, SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE)); -#ifdef __SMARTPHONE__ +#if defined(__SMARTPHONE__) && defined(__WXWINCE__) SetLeftMenu(wxID_EXIT, _("Done")); #endif @@ -322,7 +317,7 @@ void wxFrame::PositionStatusBar() void wxFrame::AttachMenuBar(wxMenuBar *menubar) { -#if defined(__SMARTPHONE__) +#if defined(__SMARTPHONE__) && defined(__WXWINCE__) wxMenu *autoMenu = NULL; @@ -439,92 +434,75 @@ void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event) // 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); } @@ -658,6 +636,8 @@ void wxFrame::PositionToolBar() // 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() ) @@ -788,14 +768,13 @@ bool wxFrame::HandlePaint() } } -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 @@ -806,23 +785,16 @@ bool wxFrame::HandleSize(int x, int y, WXUINT id) 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 ) { @@ -848,13 +820,11 @@ bool wxFrame::HandleSize(int x, int y, WXUINT id) } } -#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) @@ -880,13 +850,13 @@ 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) ) { @@ -990,7 +960,7 @@ WXLRESULT wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lPara break; case WM_EXITMENULOOP: - processed = HandleMenuLoop(wxEVT_MENU_CLOSE, wParam); + processed = HandleMenuLoop(wxEVT_MENU_CLOSE, (WXWORD)wParam); break; case WM_QUERYDRAGICON: