diff options
author | Mathias Bauer <mba@openoffice.org> | 2001-06-21 12:57:41 +0000 |
---|---|---|
committer | Mathias Bauer <mba@openoffice.org> | 2001-06-21 12:57:41 +0000 |
commit | 8f80bd3b8251d0ea87a8aecd823f8ca5bee383b3 (patch) | |
tree | bcb1094db73b554a9ddc95105d15d9ff52811573 /sfx2 | |
parent | b2d6ce69d3a53c7b50ce498c4db66b62c273effd (diff) |
#88527#: methods for toggeling the menubar
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/view/topfrm.cxx | 22 | ||||
-rw-r--r-- | sfx2/source/view/viewfrm.cxx | 89 |
2 files changed, 75 insertions, 36 deletions
diff --git a/sfx2/source/view/topfrm.cxx b/sfx2/source/view/topfrm.cxx index 550597b9ae9e..76c592eb0dd2 100644 --- a/sfx2/source/view/topfrm.cxx +++ b/sfx2/source/view/topfrm.cxx @@ -2,9 +2,9 @@ * * $RCSfile: topfrm.cxx,v $ * - * $Revision: 1.7 $ + * $Revision: 1.8 $ * - * last change: $Author: mba $ $Date: 2001-06-14 11:31:49 $ + * last change: $Author: mba $ $Date: 2001-06-21 13:57:41 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -142,6 +142,7 @@ public: Window* pWindow; // maybe external BOOL bHidden; BOOL bLockResize; + BOOL bMenuBarOn; }; class SfxTopWindow_Impl : public Window @@ -342,6 +343,7 @@ SfxTopFrame::SfxTopFrame( Window* pExternal, sal_Bool bHidden ) pImp = new SfxTopFrame_Impl; pImp->bHidden = bHidden; pImp->bLockResize = FALSE; + pImp->bMenuBarOn = TRUE; InsertTopFrame_Impl( this ); if ( pExternal ) { @@ -397,14 +399,28 @@ void SfxTopFrame::LockResize_Impl( BOOL bLock ) void SfxTopFrame::SetMenuBar_Impl( MenuBar *pMenu ) { + if ( pMenu && !pImp->bMenuBarOn ) + return; + SystemWindow *pWin = GetTopWindow_Impl(); if ( pWin && pWin->GetMenuBar() != pMenu ) { -//(mba/task): WindowMenu-Hdl fehlt, dito PickMenu-Handling pWin->SetMenuBar( pMenu ); } } +void SfxTopFrame::SetMenuBarOn_Impl( BOOL bOn ) +{ + pImp->bMenuBarOn = bOn; + if ( !bOn ) + SetMenuBar_Impl( 0 ); +} + +BOOL SfxTopFrame::IsMenuBarOn_Impl() const +{ + return pImp->bMenuBarOn; +} + MenuBar* SfxTopFrame::GetMenuBar_Impl() const { SystemWindow *pWin = GetTopWindow_Impl(); diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx index 6cf9de0f9ddd..652ab5580ac8 100644 --- a/sfx2/source/view/viewfrm.cxx +++ b/sfx2/source/view/viewfrm.cxx @@ -2,9 +2,9 @@ * * $RCSfile: viewfrm.cxx,v $ * - * $Revision: 1.26 $ + * $Revision: 1.27 $ * - * last change: $Author: mba $ $Date: 2001-06-20 16:17:04 $ + * last change: $Author: mba $ $Date: 2001-06-21 13:57:41 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -181,6 +181,7 @@ using namespace ::com::sun::star::frame; #include "helper.hxx" #include "tbxconf.hxx" #include "mnumgr.hxx" +#include "virtmenu.hxx" //------------------------------------------------------------------------- DBG_NAME(SfxViewFrame); @@ -3431,47 +3432,58 @@ void SfxViewFrame::ToolboxExec_Impl( SfxRequest &rReq ) { // Object-Bar-Id ermitteln sal_uInt16 nSID = rReq.GetSlot(), nTbxID; - switch ( nSID ) + SFX_REQUEST_ARG(rReq, pShowItem, SfxBoolItem, nSID, sal_False); + + if ( nSID == SID_TOGGLE_MENUBAR ) { - case SID_TOGGLEFUNCTIONBAR: nTbxID = SFX_OBJECTBAR_APPLICATION; break; - case SID_TOGGLEOBJECTBAR: nTbxID = SFX_OBJECTBAR_OBJECT; break; - case SID_TOGGLETOOLBAR: nTbxID = SFX_OBJECTBAR_TOOLS; break; - case SID_TOGGLEMACROBAR: nTbxID = SFX_OBJECTBAR_MACRO; break; - case SID_TOGGLEOPTIONBAR: nTbxID = SFX_OBJECTBAR_OPTIONS; break; - case SID_TOGGLECOMMONTASKBAR: nTbxID = SFX_OBJECTBAR_COMMONTASK; break; - case SID_TOGGLENAVBAR: nTbxID = SFX_OBJECTBAR_NAVIGATION; break; - //case SID_TOGGLERECORDINGBAR: nTbxID = SFX_OBJECTBAR_RECORDING; break; - //case SID_TOGGLEFULLSCREENBAR: nTbxID = SFX_OBJECTBAR_FULLSCREEN; break; - default: - DBG_ERROR( "invalid ObjectBar`s SID" ); + SfxTopViewFrame* pTopView = PTR_CAST( SfxTopViewFrame, GetTopViewFrame() ); + SfxTopFrame *pTop = pTopView ? pTopView->GetTopFrame_Impl() : NULL; + if ( pTop ) + { + sal_Bool bShow = pShowItem ? pShowItem->GetValue() : ( pTop->GetMenuBar_Impl() == 0 ); + pTop->SetMenuBarOn_Impl( bShow ); + GetDispatcher()->Update_Impl(sal_True); + } } + else + { + switch ( nSID ) + { + case SID_TOGGLEFUNCTIONBAR: nTbxID = SFX_OBJECTBAR_APPLICATION; break; + case SID_TOGGLEOBJECTBAR: nTbxID = SFX_OBJECTBAR_OBJECT; break; + case SID_TOGGLETOOLBAR: nTbxID = SFX_OBJECTBAR_TOOLS; break; + case SID_TOGGLEMACROBAR: nTbxID = SFX_OBJECTBAR_MACRO; break; + case SID_TOGGLEOPTIONBAR: nTbxID = SFX_OBJECTBAR_OPTIONS; break; + case SID_TOGGLECOMMONTASKBAR: nTbxID = SFX_OBJECTBAR_COMMONTASK; break; + case SID_TOGGLENAVBAR: nTbxID = SFX_OBJECTBAR_NAVIGATION; break; + //case SID_TOGGLERECORDINGBAR: nTbxID = SFX_OBJECTBAR_RECORDING; break; + //case SID_TOGGLEFULLSCREENBAR: nTbxID = SFX_OBJECTBAR_FULLSCREEN; break; + default: + DBG_ERROR( "invalid ObjectBar`s SID" ); + } - // Parameter auswerten + // Parameter auswerten #if SUPD<635 - SfxToolBoxConfig *pTbxConfig = SfxToolBoxConfig::GetOrCreate(); + SfxToolBoxConfig *pTbxConfig = SfxToolBoxConfig::GetOrCreate(); #else - SfxToolBoxConfig *pTbxConfig = GetObjectShell()->GetToolBoxConfig_Impl(); + SfxToolBoxConfig *pTbxConfig = GetObjectShell()->GetToolBoxConfig_Impl(); #endif - SFX_REQUEST_ARG(rReq, pShowItem, SfxBoolItem, nSID, sal_False); - sal_Bool bShow = pShowItem ? pShowItem->GetValue() : !pTbxConfig->IsToolBoxPositionVisible(nTbxID); - - // ausfuehren - pTbxConfig->SetToolBoxPositionVisible(nTbxID, bShow); - GetBindings().Invalidate( nSID ); + // ausfuehren + sal_Bool bShow = pShowItem ? pShowItem->GetValue() : !pTbxConfig->IsToolBoxPositionVisible(nTbxID); + pTbxConfig->SetToolBoxPositionVisible(nTbxID, bShow); + GetBindings().Invalidate( nSID ); - SfxViewFrame* pViewFrame = SfxViewFrame::GetFirst(); - while ( pViewFrame ) - { - // update all "final" dispatchers - if ( !pViewFrame->GetActiveChildFrame_Impl() ) - pViewFrame->GetDispatcher()->Update_Impl(sal_True); - pViewFrame = SfxViewFrame::GetNext(*pViewFrame); + SfxViewFrame* pViewFrame = SfxViewFrame::GetFirst(); + while ( pViewFrame ) + { + // update all "final" dispatchers + if ( !pViewFrame->GetActiveChildFrame_Impl() ) + pViewFrame->GetDispatcher()->Update_Impl(sal_True); + pViewFrame = SfxViewFrame::GetNext(*pViewFrame); + } } - // ggf. recorden - if ( !rReq.IsAPI() ) - rReq.AppendItem( SfxBoolItem( nSID, bShow ) ); rReq.Done(); } @@ -3490,6 +3502,17 @@ void SfxViewFrame::ToolboxState_Impl( SfxItemSet &rSet ) #endif switch ( nSID ) { + case SID_TOGGLE_MENUBAR: + { + SfxTopViewFrame* pTopView = PTR_CAST( SfxTopViewFrame, GetTopViewFrame() ); + SfxTopFrame *pTop = pTopView ? pTopView->GetTopFrame_Impl() : NULL; + if ( pTop ) + rSet.Put( SfxBoolItem( nSID, pTop->IsMenuBarOn_Impl() ) ); + else + rSet.DisableItem( nSID ); + break; + } + case SID_TOGGLEFUNCTIONBAR: rSet.Put( SfxBoolItem( nSID, pTbxConfig-> IsToolBoxPositionVisible(SFX_OBJECTBAR_APPLICATION))); |