diff options
Diffstat (limited to 'framework/source/uielement/toolbarmodemenucontroller.cxx')
-rw-r--r-- | framework/source/uielement/toolbarmodemenucontroller.cxx | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/framework/source/uielement/toolbarmodemenucontroller.cxx b/framework/source/uielement/toolbarmodemenucontroller.cxx index 300d386855a8..ff8c0596aa98 100644 --- a/framework/source/uielement/toolbarmodemenucontroller.cxx +++ b/framework/source/uielement/toolbarmodemenucontroller.cxx @@ -18,7 +18,6 @@ */ #include <uielement/toolbarmodemenucontroller.hxx> - #include <services.h> #include <framework/sfxhelperfunctions.hxx> @@ -101,6 +100,12 @@ void ToolbarModeMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > case vcl::EnumContext::Application::Draw: aPath.append("Draw"); break; + case vcl::EnumContext::Application::Formula: + aPath.append("Formula"); + break; + case vcl::EnumContext::Application::Base: + aPath.append("Base"); + break; default: break; } @@ -116,6 +121,7 @@ void ToolbarModeMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > const Sequence<OUString> aModeNodeNames (aModesNode.getNodeNames()); const sal_Int32 nCount(aModeNodeNames.getLength()); SvtMiscOptions aMiscOptions; + long nCountToolbar = 0; for ( sal_Int32 nReadIndex = 0; nReadIndex < nCount; ++nReadIndex ) { @@ -131,10 +137,13 @@ void ToolbarModeMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > // Allow Notebookbar only in experimental mode if ( isExperimental && !aMiscOptions.IsExperimentalMode() ) continue; + if ( !isExperimental ) + nCountToolbar++; m_xPopupMenu->insertItem( nReadIndex+1, aLabel, css::awt::MenuItemStyle::RADIOCHECK, nPosition ); rPopupMenu->setCommand( nReadIndex+1, aCommandArg ); } + rPopupMenu->insertSeparator(nCountToolbar); } // XEventListener @@ -223,8 +232,30 @@ void SAL_CALL ToolbarModeMenuController::itemSelected( const css::awt::MenuEvent { SolarMutexGuard aSolarMutexGuard; PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); - OUString aCmd( pVCLPopupMenu->GetItemCommand( rEvent.MenuId )); + + { + OUStringBuffer aBuf(".uno:Notebookbar?File:string="); + aBuf.append( aCmd ); + URL aTargetURL; + Sequence<PropertyValue> aArgs; + + aTargetURL.Complete = aBuf.makeStringAndClear(); + xURLTransformer->parseStrict( aTargetURL ); + Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); + if ( xDispatchProvider.is() ) + { + Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( + aTargetURL, OUString(), 0 ); + + ExecuteInfo* pExecuteInfo = new ExecuteInfo; + pExecuteInfo->xDispatch = xDispatch; + pExecuteInfo->aTargetURL = aTargetURL; + pExecuteInfo->aArgs = aArgs; + Application::PostUserEvent( LINK(nullptr,ToolbarModeMenuController, ExecuteHdl_Impl), pExecuteInfo ); + } + } + OUStringBuffer aBuf(".uno:ToolbarMode?Mode:string="); aBuf.append( aCmd ); URL aTargetURL; @@ -268,6 +299,12 @@ void SAL_CALL ToolbarModeMenuController::itemActivated( const css::awt::MenuEven case vcl::EnumContext::Application::Draw: aPath.append("Draw"); break; + case vcl::EnumContext::Application::Formula: + aPath.append("Formula"); + break; + case vcl::EnumContext::Application::Base: + aPath.append("Base"); + break; default: break; } |