summaryrefslogtreecommitdiff
path: root/framework
diff options
context:
space:
mode:
authorMaxim Monastirsky <momonasmon@gmail.com>2017-05-18 01:43:01 +0300
committerMaxim Monastirsky <momonasmon@gmail.com>2017-05-18 02:15:23 +0300
commite5736b9e4ded62cdeaa49649763392779d312e0a (patch)
treedfd0b9db264ed627bce4ab588bb1ce0010f4f60a /framework
parent84123b2cdb61479b52bb49ed5e164e8ec4691bb8 (diff)
Revert "Popup menu controllers never attached to empty menus"
This reverts commit 005f4a75e129dcbc74261b90432e2944ca99b131. There might be however old profiles/documents with this behavior. Let's revert for now. Change-Id: I2ee26287b7bd64e01a9b6b0a9586d70e63b9c83d
Diffstat (limited to 'framework')
-rw-r--r--framework/source/uielement/menubarmanager.cxx26
1 files changed, 24 insertions, 2 deletions
diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx
index fac26401f590..d99019c435da 100644
--- a/framework/source/uielement/menubarmanager.cxx
+++ b/framework/source/uielement/menubarmanager.cxx
@@ -1131,9 +1131,31 @@ void MenuBarManager::FillMenuManager( Menu* pMenu, const Reference< XFrame >& rF
pMenu->SetHelpCommand( nItemId, "" );
}
- assert(!m_xPopupMenuControllerFactory.is() || !m_xPopupMenuControllerFactory->hasController( aItemCommand, m_aModuleIdentifier ));
+ if ( m_xPopupMenuControllerFactory.is() &&
+ pPopup->GetItemCount() == 0 &&
+ m_xPopupMenuControllerFactory->hasController( aItemCommand, m_aModuleIdentifier )
+ )
+ {
+ // Check if we have to create a popup menu for a uno based popup menu controller.
+ // We have to set an empty popup menu into our menu structure so the controller also
+ // works with inplace OLE. Remove old dummy popup menu!
+ MenuItemHandler* pItemHandler = new MenuItemHandler( nItemId, xStatusListener, xDispatch );
+ VCLXPopupMenu* pVCLXPopupMenu = new VCLXPopupMenu;
+ PopupMenu* pNewPopupMenu = static_cast<PopupMenu *>(pVCLXPopupMenu->GetMenu());
+ pMenu->SetPopupMenu( nItemId, pNewPopupMenu );
+ pItemHandler->xPopupMenu.set( static_cast<OWeakObject *>(pVCLXPopupMenu), UNO_QUERY );
+ pItemHandler->aMenuItemURL = aItemCommand;
+ m_aMenuItemHandlerVector.push_back( pItemHandler );
+ pPopup.disposeAndClear();
- if ( aItemCommand.startsWith( ADDONSPOPUPMENU_URL_PREFIX_STR ) )
+ if ( bAccessibilityEnabled )
+ {
+ if ( CreatePopupMenuController( pItemHandler ))
+ pItemHandler->xPopupMenuController->updatePopupMenu();
+ }
+ lcl_CheckForChildren(pMenu, nItemId);
+ }
+ else if ( aItemCommand.startsWith( ADDONSPOPUPMENU_URL_PREFIX_STR ) )
{
// A special addon popup menu, must be created with a different ctor
MenuBarManager* pSubMenuManager = new MenuBarManager( m_xContext, m_xFrame, m_xURLTransformer, pPopup, true );