diff options
Diffstat (limited to 'framework')
-rw-r--r-- | framework/source/layoutmanager/layoutmanager.cxx | 4 | ||||
-rw-r--r-- | framework/source/uielement/menubarwrapper.cxx | 28 | ||||
-rw-r--r-- | framework/source/uifactory/menubarfactory.cxx | 11 |
3 files changed, 28 insertions, 15 deletions
diff --git a/framework/source/layoutmanager/layoutmanager.cxx b/framework/source/layoutmanager/layoutmanager.cxx index 30de7cbc30d1..0651e0f718a1 100644 --- a/framework/source/layoutmanager/layoutmanager.cxx +++ b/framework/source/layoutmanager/layoutmanager.cxx @@ -726,11 +726,13 @@ Reference< XUIElement > LayoutManager::implts_createElement( const OUString& aNa Reference< ui::XUIElement > xUIElement; SolarMutexGuard g; - Sequence< PropertyValue > aPropSeq( 2 ); + Sequence< PropertyValue > aPropSeq( 3 ); aPropSeq[0].Name = "Frame"; aPropSeq[0].Value <<= m_xFrame; aPropSeq[1].Name = "Persistent"; aPropSeq[1].Value <<= sal_True; + aPropSeq[2].Name = "Container"; + aPropSeq[2].Value <<= m_xContainerWindow; try { diff --git a/framework/source/uielement/menubarwrapper.cxx b/framework/source/uielement/menubarwrapper.cxx index cc5820c8d59a..4cd67300060f 100644 --- a/framework/source/uielement/menubarwrapper.cxx +++ b/framework/source/uielement/menubarwrapper.cxx @@ -34,6 +34,7 @@ #include <comphelper/processfactory.hxx> #include <comphelper/sequence.hxx> #include <vcl/svapp.hxx> +#include "../layoutmanager/helpers.hxx" using namespace com::sun::star; using namespace com::sun::star::uno; @@ -122,6 +123,20 @@ void SAL_CALL MenuBarWrapper::initialize( const Sequence< Any >& aArguments ) th OUString aModuleIdentifier; UIConfigElementWrapperBase::initialize( aArguments ); + bool bMenuOnly( false ); + Reference< XWindow > xContainerWindow; + for ( sal_Int32 n = 0; n < aArguments.getLength(); n++ ) + { + PropertyValue aPropValue; + if ( aArguments[n] >>= aPropValue ) + { + if ( aPropValue.Name == "MenuOnly" ) + aPropValue.Value >>= bMenuOnly; + else if ( aPropValue.Name == "Container" ) + aPropValue.Value >>= xContainerWindow; + } + } + Reference< XFrame > xFrame( m_xWeakFrame ); if ( xFrame.is() && m_xConfigSource.is() ) { @@ -130,7 +145,7 @@ void SAL_CALL MenuBarWrapper::initialize( const Sequence< Any >& aArguments ) th VCLXMenuBar* pAwtMenuBar = nullptr; { SolarMutexGuard aSolarMutexGuard; - pVCLMenuBar = new MenuBar(); + pVCLMenuBar = new MenuBar(getTopSystemWindow(xContainerWindow)); } Reference< XModuleManager2 > xModuleManager = ModuleManager::create( m_xContext ); @@ -159,17 +174,6 @@ void SAL_CALL MenuBarWrapper::initialize( const Sequence< Any >& aArguments ) th { } - bool bMenuOnly( false ); - for ( sal_Int32 n = 0; n < aArguments.getLength(); n++ ) - { - PropertyValue aPropValue; - if ( aArguments[n] >>= aPropValue ) - { - if ( aPropValue.Name == "MenuOnly" ) - aPropValue.Value >>= bMenuOnly; - } - } - if ( !bMenuOnly ) { // Initialize menubar manager with our vcl menu bar. There are some situations where we only want to get the menu without any diff --git a/framework/source/uifactory/menubarfactory.cxx b/framework/source/uifactory/menubarfactory.cxx index e9d9f79ce5ab..13025adcfff7 100644 --- a/framework/source/uifactory/menubarfactory.cxx +++ b/framework/source/uifactory/menubarfactory.cxx @@ -34,6 +34,7 @@ #include <rtl/ustrbuf.hxx> using namespace com::sun::star::uno; +using namespace com::sun::star::awt; using namespace com::sun::star::lang; using namespace com::sun::star::frame; using namespace com::sun::star::beans; @@ -74,6 +75,7 @@ void MenuBarFactory::CreateUIElement(const OUString& ResourceURL Reference< XUIConfigurationManager > xCfgMgr; Reference< XUIConfigurationManager > xConfigSource; Reference< XFrame > xFrame; + Reference< XWindow > xContainerWindow; OUString aResourceURL( ResourceURL ); bool bPersistent( true ); bool bExtraMode( false ); @@ -84,6 +86,8 @@ void MenuBarFactory::CreateUIElement(const OUString& ResourceURL Args[n].Value >>= xConfigSource; else if ( Args[n].Name == "Frame" ) Args[n].Value >>= xFrame; + else if ( Args[n].Name == "Container" ) + Args[n].Value >>= xContainerWindow; else if ( Args[n].Name == "ResourceURL" ) Args[n].Value >>= aResourceURL; else if ( Args[n].Name == "Persistent" ) @@ -129,7 +133,7 @@ void MenuBarFactory::CreateUIElement(const OUString& ResourceURL } PropertyValue aPropValue; - Sequence< Any > aPropSeq( _pExtraMode ? 5 : 4); + Sequence< Any > aPropSeq( _pExtraMode ? 6 : 5); aPropValue.Name = "Frame"; aPropValue.Value <<= xFrame; aPropSeq[0] <<= aPropValue; @@ -142,11 +146,14 @@ void MenuBarFactory::CreateUIElement(const OUString& ResourceURL aPropValue.Name = "Persistent"; aPropValue.Value <<= bPersistent; aPropSeq[3] <<= aPropValue; + aPropValue.Name = "Container"; + aPropValue.Value <<= xContainerWindow; + aPropSeq[4] <<= aPropValue; if ( _pExtraMode ) { aPropValue.Name = OUString::createFromAscii(_pExtraMode); aPropValue.Value <<= bExtraMode; - aPropSeq[4] <<= aPropValue; + aPropSeq[5] <<= aPropValue; } SolarMutexGuard aGuard; |