summaryrefslogtreecommitdiff
path: root/framework/source/uielement/generictoolbarcontroller.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'framework/source/uielement/generictoolbarcontroller.cxx')
-rw-r--r--framework/source/uielement/generictoolbarcontroller.cxx13
1 files changed, 9 insertions, 4 deletions
diff --git a/framework/source/uielement/generictoolbarcontroller.cxx b/framework/source/uielement/generictoolbarcontroller.cxx
index 620462b71fdc..46fd4e0f9799 100644
--- a/framework/source/uielement/generictoolbarcontroller.cxx
+++ b/framework/source/uielement/generictoolbarcontroller.cxx
@@ -305,10 +305,8 @@ MenuToolbarController::~MenuToolbarController()
catch( const Exception& ) {}
if ( pMenu )
{
- delete pMenu;
- pMenu = nullptr;
+ pMenu.disposeAndClear();
}
-
}
class Toolbarmenu : public ::PopupMenu
@@ -316,6 +314,7 @@ class Toolbarmenu : public ::PopupMenu
public:
Toolbarmenu();
virtual ~Toolbarmenu();
+ virtual void dispose() override;
};
Toolbarmenu::Toolbarmenu()
@@ -325,7 +324,13 @@ Toolbarmenu::Toolbarmenu()
Toolbarmenu::~Toolbarmenu()
{
+ disposeOnce();
+}
+
+void Toolbarmenu::dispose()
+{
SAL_INFO("fwk.uielement", "destructing Toolbarmenu " << this);
+ ::PopupMenu::dispose();
}
void SAL_CALL MenuToolbarController::click() throw (RuntimeException, std::exception)
@@ -340,7 +345,7 @@ MenuToolbarController::createPopupWindow() throw (css::uno::RuntimeException, st
{
Reference< XDispatchProvider > xDispatch;
Reference< XURLTransformer > xURLTransformer = URLTransformer::create( m_xContext );
- pMenu = new Toolbarmenu();
+ pMenu = VclPtr<Toolbarmenu>::Create();
m_xMenuManager.set( new MenuBarManager( m_xContext, m_xFrame, xURLTransformer, xDispatch, m_aModuleIdentifier, pMenu, true, true, false ) );
if (m_xMenuManager.is())
{