framework/source/classes/menumanager.cxx | 46 +++++++++++------------ framework/source/uielement/menubarmanager.cxx | 26 +++++++------ framework/source/uielement/newmenucontroller.cxx | 11 +++++ 3 files changed, 47 insertions(+), 36 deletions(-)
New commits: commit b9ef5a4b129bf5c7ce566ba1da74a2e21595b8fa Author: Oliver Specht <oliver.spe...@cib.de> Date: Wed Feb 17 12:07:59 2016 +0100 allow disabling file/new, wizards, recent documents menu entries disabling the dispatches '.uno:AutoPilotMenu' and '.uno:AddDirect' and .uno:RecentFileList via UNO API now results in disabled menu entries as expected Change-Id: Id99be9374306ff8c0cea919ea94ed96f715a8058 Reviewed-on: https://gerrit.libreoffice.org/22422 Reviewed-by: Oliver Specht <oliver.spe...@cib.de> Tested-by: Oliver Specht <oliver.spe...@cib.de> Reviewed-on: https://gerrit.libreoffice.org/22471 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/framework/source/classes/menumanager.cxx b/framework/source/classes/menumanager.cxx index 56ae8e4..6fd7f3b 100644 --- a/framework/source/classes/menumanager.cxx +++ b/framework/source/classes/menumanager.cxx @@ -177,33 +177,33 @@ MenuManager::MenuManager( } else { - if ( nItemId == SID_NEWDOCDIRECT || aItemCommand == aSlotNewDocDirect ) + bool isNewDoc = nItemId == SID_NEWDOCDIRECT || aItemCommand == aSlotNewDocDirect; + bool isAutoPilot = nItemId == SID_AUTOPILOTMENU || aItemCommand == aSlotAutoPilot; + if(isNewDoc || isAutoPilot) { - MenuConfiguration aMenuCfg( m_xContext ); - BmkMenu* pSubMenu = static_cast<BmkMenu*>(aMenuCfg.CreateBookmarkMenu( rFrame, BOOKMARK_NEWMENU )); - pMenu->SetPopupMenu( nItemId, pSubMenu ); - - AddMenu(pSubMenu,OUString(),nItemId,true,false); - if ( bShowMenuImages && !pMenu->GetItemImage( nItemId )) + Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); + URL aTargetURL; + aTargetURL.Complete = OUString::createFromAscii(isNewDoc ? aSlotNewDocDirect : aSlotAutoPilot); + m_xURLTransformer->parseStrict( aTargetURL ); + Reference< XDispatch > xMenuItemDispatch = xDispatchProvider->queryDispatch( + aTargetURL, OUString(), 0 ); + if(xMenuItemDispatch == nullptr) { - Image aImage = GetImageFromURL( rFrame, aItemCommand, false ); - if ( !!aImage ) - pMenu->SetItemImage( nItemId, aImage ); + m_pVCLMenu->EnableItem( nItemId, false ); } - } - else if ( nItemId == SID_AUTOPILOTMENU || aItemCommand == aSlotAutoPilot ) - { - MenuConfiguration aMenuCfg( m_xContext ); - BmkMenu* pSubMenu = static_cast<BmkMenu*>(aMenuCfg.CreateBookmarkMenu( rFrame, BOOKMARK_WIZARDMENU )); - pMenu->SetPopupMenu( nItemId, pSubMenu ); - - AddMenu(pSubMenu,OUString(),nItemId,true,false); - - if ( bShowMenuImages && !pMenu->GetItemImage( nItemId )) + else { - Image aImage = GetImageFromURL( rFrame, aItemCommand, false ); - if ( !!aImage ) - pMenu->SetItemImage( nItemId, aImage ); + MenuConfiguration aMenuCfg( m_xContext ); + BmkMenu* pSubMenu = static_cast<BmkMenu*>(aMenuCfg.CreateBookmarkMenu( rFrame, + OUString::createFromAscii(isNewDoc ? BOOKMARK_NEWMENU : BOOKMARK_WIZARDMENU))); + pMenu->SetPopupMenu( nItemId, pSubMenu ); + AddMenu(pSubMenu,OUString(),nItemId,true,false); + if ( bShowMenuImages && !pMenu->GetItemImage( nItemId )) + { + Image aImage = GetImageFromURL( rFrame, aItemCommand, false ); + if ( !!aImage ) + pMenu->SetItemImage( nItemId, aImage ); + } } } else if ( pMenu->GetItemType( i ) != MenuItemType::SEPARATOR ) diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx index 5f2b85a..6a368a9 100644 --- a/framework/source/uielement/menubarmanager.cxx +++ b/framework/source/uielement/menubarmanager.cxx @@ -869,20 +869,22 @@ IMPL_LINK_TYPED( MenuBarManager, Activate, Menu *, pMenu, bool ) xMenuItemDispatch = xDispatchProvider->queryDispatch( aTargetURL, OUString(), 0 ); bool bPopupMenu( false ); - if ( !pMenuItemHandler->xPopupMenuController.is() && - m_xPopupMenuControllerFactory->hasController( aItemCommand, OUString() )) + if(xMenuItemDispatch != nullptr) { - bPopupMenu = CreatePopupMenuController( pMenuItemHandler ); - } - else if ( pMenuItemHandler->xPopupMenuController.is() ) - { - // Force update of popup menu - pMenuItemHandler->xPopupMenuController->updatePopupMenu(); - bPopupMenu = true; - if (PopupMenu* pThisPopup = pMenu->GetPopupMenu( pMenuItemHandler->nItemId )) - pMenu->EnableItem( pMenuItemHandler->nItemId, pThisPopup->GetItemCount() != 0 ); + if ( !pMenuItemHandler->xPopupMenuController.is() && + m_xPopupMenuControllerFactory->hasController( aItemCommand, m_aModuleIdentifier ) ) + { + bPopupMenu = CreatePopupMenuController( pMenuItemHandler ); + } + else if ( pMenuItemHandler->xPopupMenuController.is() ) + { + // Force update of popup menu + pMenuItemHandler->xPopupMenuController->updatePopupMenu(); + bPopupMenu = true; + if (PopupMenu* pThisPopup = pMenu->GetPopupMenu( pMenuItemHandler->nItemId )) + pMenu->EnableItem( pMenuItemHandler->nItemId, pThisPopup->GetItemCount() != 0 ); + } } - lcl_CheckForChildren(pMenu, pMenuItemHandler->nItemId); if ( xMenuItemDispatch.is() ) diff --git a/framework/source/uielement/newmenucontroller.cxx b/framework/source/uielement/newmenucontroller.cxx index 9029ccc..b398742 100644 --- a/framework/source/uielement/newmenucontroller.cxx +++ b/framework/source/uielement/newmenucontroller.cxx @@ -46,6 +46,8 @@ #include <memory> // Defines +#define aSlotNewDocDirect ".uno:AddDirect" +#define aSlotAutoPilot ".uno:AutoPilotMenu" using namespace com::sun::star::uno; using namespace com::sun::star::lang; @@ -327,6 +329,13 @@ void NewMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& rPopup MenuConfiguration aMenuCfg( m_xContext ); std::unique_ptr<BmkMenu> pSubMenu; + Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); + URL aTargetURL; + aTargetURL.Complete = rtl::OUString::createFromAscii(m_bNewMenu ? aSlotNewDocDirect : aSlotAutoPilot); + m_xURLTransformer->parseStrict( aTargetURL ); + Reference< XDispatch > xMenuItemDispatch = xDispatchProvider->queryDispatch( aTargetURL, OUString(), 0 ); + if(xMenuItemDispatch == nullptr) + return; if ( m_bNewMenu ) pSubMenu.reset(static_cast<BmkMenu*>(aMenuCfg.CreateBookmarkMenu( m_xFrame, BOOKMARK_NEWMENU ))); else @@ -517,7 +526,7 @@ void SAL_CALL NewMenuController::initialize( const Sequence< Any >& aArguments ) const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); m_bShowImages = rSettings.GetUseImagesInMenus(); - m_bNewMenu = m_aCommandURL == ".uno:AddDirect"; + m_bNewMenu = m_aCommandURL == aSlotNewDocDirect; } } }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits