summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Monastirsky <momonasmon@gmail.com>2016-01-29 00:40:36 +0200
committerMaxim Monastirsky <momonasmon@gmail.com>2016-01-29 01:13:54 +0200
commit6402164182865d7644d2e93158a23e12a6da3926 (patch)
treec3686605976e71875591b894a8f1a7b83668382f
parent8f1a1092d47947847e1d888b0284e8364c663d1f (diff)
tdf#97411 ResourceMenuController: Don't forget to dispose MenuBarManager
Change-Id: Ib41952dae6bcca80436355fa5a0707e671fd3698
-rw-r--r--framework/source/uielement/resourcemenucontroller.cxx20
1 files changed, 16 insertions, 4 deletions
diff --git a/framework/source/uielement/resourcemenucontroller.cxx b/framework/source/uielement/resourcemenucontroller.cxx
index a626e3540353..581c22795da1 100644
--- a/framework/source/uielement/resourcemenucontroller.cxx
+++ b/framework/source/uielement/resourcemenucontroller.cxx
@@ -175,7 +175,11 @@ void ResourceMenuController::updatePopupMenu()
}
// Clear previous content.
- m_xMenuBarManager.clear();
+ if ( m_xMenuBarManager.is() )
+ {
+ m_xMenuBarManager->dispose();
+ m_xMenuBarManager.clear();
+ }
resetPopupMenu( m_xPopupMenu );
m_nNewMenuId = 1;
@@ -240,7 +244,7 @@ void ResourceMenuController::itemActivated( const css::awt::MenuEvent& /*rEvent*
VCLXMenu* pAwtMenu = VCLXMenu::GetImplementation( m_xPopupMenu );
css::uno::Reference< css::frame::XDispatchProvider > xDispatchProvider( m_xFrame, css::uno::UNO_QUERY );
m_xMenuBarManager.set( new framework::MenuBarManager(
- m_xContext, m_xFrame, m_xURLTransformer, xDispatchProvider, m_aModuleName, pAwtMenu->GetMenu(), true, true, !m_bContextMenu && !m_bInToolbar ) );
+ m_xContext, m_xFrame, m_xURLTransformer, xDispatchProvider, m_aModuleName, pAwtMenu->GetMenu(), false, true, !m_bContextMenu && !m_bInToolbar ) );
}
}
@@ -278,8 +282,12 @@ void ResourceMenuController::disposing( const css::lang::EventObject& rEvent )
m_xModuleConfigManager.clear();
else
{
+ if ( m_xMenuBarManager.is() )
+ {
+ m_xMenuBarManager->dispose();
+ m_xMenuBarManager.clear();
+ }
svt::PopupMenuControllerBase::disposing( rEvent );
- m_xMenuBarManager.clear();
}
}
@@ -295,8 +303,12 @@ void ResourceMenuController::disposing()
m_xConfigManager.clear();
m_xModuleConfigManager.clear();
- m_xMenuBarManager.clear();
m_xMenuContainer.clear();
+ if ( m_xMenuBarManager.is() )
+ {
+ m_xMenuBarManager->dispose();
+ m_xMenuBarManager.clear();
+ }
svt::PopupMenuControllerBase::disposing();
}