summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorMathias Bauer <mba@openoffice.org>2001-06-21 12:57:41 +0000
committerMathias Bauer <mba@openoffice.org>2001-06-21 12:57:41 +0000
commit8f80bd3b8251d0ea87a8aecd823f8ca5bee383b3 (patch)
treebcb1094db73b554a9ddc95105d15d9ff52811573 /sfx2
parentb2d6ce69d3a53c7b50ce498c4db66b62c273effd (diff)
#88527#: methods for toggeling the menubar
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/source/view/topfrm.cxx22
-rw-r--r--sfx2/source/view/viewfrm.cxx89
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)));