summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dbaccess/source/ui/browser/unodatbr.cxx9
-rw-r--r--extensions/source/bibliography/framectr.cxx5
-rw-r--r--framework/source/fwe/helper/titlehelper.cxx4
-rw-r--r--framework/source/helper/persistentwindowstate.cxx4
-rw-r--r--framework/source/helper/tagwindowasmodified.cxx3
-rw-r--r--framework/source/helper/titlebarupdate.cxx4
-rw-r--r--framework/source/uielement/resourcemenucontroller.cxx6
-rw-r--r--sdext/source/presenter/PresenterController.cxx12
-rw-r--r--svx/source/form/datanavi.cxx7
9 files changed, 41 insertions, 13 deletions
diff --git a/dbaccess/source/ui/browser/unodatbr.cxx b/dbaccess/source/ui/browser/unodatbr.cxx
index be857da0de9c..db5bec8c6428 100644
--- a/dbaccess/source/ui/browser/unodatbr.cxx
+++ b/dbaccess/source/ui/browser/unodatbr.cxx
@@ -248,6 +248,11 @@ void SAL_CALL SbaTableQueryBrowser::disposing()
// remove ourself as status listener
implRemoveStatusListeners();
+ // check out from all the objects we are listening
+ // the frame
+ if (m_xCurrentFrameParent.is())
+ m_xCurrentFrameParent->removeFrameActionListener(static_cast<css::frame::XFrameActionListener*>(this));
+
// remove the container listener from the database context
try
{
@@ -259,10 +264,6 @@ void SAL_CALL SbaTableQueryBrowser::disposing()
DBG_UNHANDLED_EXCEPTION("dbaccess");
}
- // check out from all the objects we are listening
- // the frame
- if (m_xCurrentFrameParent.is())
- m_xCurrentFrameParent->removeFrameActionListener(static_cast<css::frame::XFrameActionListener*>(this));
SbaXDataBrowserController::disposing();
}
diff --git a/extensions/source/bibliography/framectr.cxx b/extensions/source/bibliography/framectr.cxx
index 7b0a5dd9eaba..e83580689435 100644
--- a/extensions/source/bibliography/framectr.cxx
+++ b/extensions/source/bibliography/framectr.cxx
@@ -221,6 +221,11 @@ void BibFrameController_Impl::dispose()
{
m_bDisposing = true;
lang::EventObject aObject;
+ uno::Reference< XFrame > xFrame = getFrame();
+
+ if (xFrame.is())
+ xFrame->removeFrameActionListener( m_xImpl );
+
aObject.Source = static_cast<XController*>(this);
m_xImpl->aLC.disposeAndClear(aObject);
m_xDatMan.clear();
diff --git a/framework/source/fwe/helper/titlehelper.cxx b/framework/source/fwe/helper/titlehelper.cxx
index 5936d9133ff3..24d1eb3bf898 100644
--- a/framework/source/fwe/helper/titlehelper.cxx
+++ b/framework/source/fwe/helper/titlehelper.cxx
@@ -242,6 +242,10 @@ void SAL_CALL TitleHelper::disposing(const css::lang::EventObject& aEvent)
if ( ! xOwner.is ())
return;
+ css::uno::Reference< css::frame::XFrame > xFrame(xOwner, css::uno::UNO_QUERY);
+ if (xFrame.is())
+ xFrame->removeFrameActionListener(this);
+
if (xOwner != aEvent.Source)
return;
diff --git a/framework/source/helper/persistentwindowstate.cxx b/framework/source/helper/persistentwindowstate.cxx
index d2e78df8d98c..8121ad025a1c 100644
--- a/framework/source/helper/persistentwindowstate.cxx
+++ b/framework/source/helper/persistentwindowstate.cxx
@@ -134,6 +134,10 @@ void SAL_CALL PersistentWindowState::frameAction(const css::frame::FrameActionEv
void SAL_CALL PersistentWindowState::disposing(const css::lang::EventObject&)
{
+ css::uno::Reference< css::frame::XFrame > xFrame(m_xFrame.get(), css::uno::UNO_QUERY);
+ if (xFrame.is())
+ xFrame->removeFrameActionListener(this);
+
// nothing todo here - because we hold the frame as weak reference only
}
diff --git a/framework/source/helper/tagwindowasmodified.cxx b/framework/source/helper/tagwindowasmodified.cxx
index f17594cee477..93f2ace64c99 100644
--- a/framework/source/helper/tagwindowasmodified.cxx
+++ b/framework/source/helper/tagwindowasmodified.cxx
@@ -123,6 +123,9 @@ void SAL_CALL TagWindowAsModified::disposing(const css::lang::EventObject& aEven
SolarMutexGuard g;
css::uno::Reference< css::frame::XFrame > xFrame(m_xFrame.get(), css::uno::UNO_QUERY);
+ if (xFrame.is())
+ xFrame->addFrameActionListener(this);
+
if (
(xFrame.is () ) &&
(aEvent.Source == xFrame)
diff --git a/framework/source/helper/titlebarupdate.cxx b/framework/source/helper/titlebarupdate.cxx
index d62be2a63192..0ca094c6d5b0 100644
--- a/framework/source/helper/titlebarupdate.cxx
+++ b/framework/source/helper/titlebarupdate.cxx
@@ -103,6 +103,10 @@ void SAL_CALL TitleBarUpdate::titleChanged(const css::frame::TitleChangedEvent&
void SAL_CALL TitleBarUpdate::disposing(const css::lang::EventObject&)
{
+ css::uno::Reference< css::frame::XFrame > xFrame(m_xFrame.get(), css::uno::UNO_QUERY);
+ if (xFrame.is())
+ xFrame->removeFrameActionListener(this);
+
// nothing todo here - because we hold the frame as weak reference only
}
diff --git a/framework/source/uielement/resourcemenucontroller.cxx b/framework/source/uielement/resourcemenucontroller.cxx
index 26198c0cf5f6..81bacc75ae70 100644
--- a/framework/source/uielement/resourcemenucontroller.cxx
+++ b/framework/source/uielement/resourcemenucontroller.cxx
@@ -317,6 +317,9 @@ void ResourceMenuController::disposing( const css::lang::EventObject& rEvent )
{
if ( m_xMenuBarManager.is() )
{
+ if (m_xFrame.is())
+ m_xFrame->removeFrameActionListener( m_xMenuBarManager );
+
m_xMenuBarManager->dispose();
m_xMenuBarManager.clear();
}
@@ -340,6 +343,9 @@ void ResourceMenuController::disposing()
m_xDispatchProvider.clear();
if ( m_xMenuBarManager.is() )
{
+ if (m_xFrame.is())
+ m_xFrame->removeFrameActionListener( m_xMenuBarManager );
+
m_xMenuBarManager->dispose();
m_xMenuBarManager.clear();
}
diff --git a/sdext/source/presenter/PresenterController.cxx b/sdext/source/presenter/PresenterController.cxx
index e1ddf110c895..7d4ac91b710e 100644
--- a/sdext/source/presenter/PresenterController.cxx
+++ b/sdext/source/presenter/PresenterController.cxx
@@ -204,12 +204,6 @@ void PresenterController::disposing()
if (mxConfigurationController.is())
mxConfigurationController->removeConfigurationChangeListener(this);
- Reference<XComponent> xWindowManagerComponent (
- static_cast<XWeak*>(mpWindowManager.get()), UNO_QUERY);
- mpWindowManager = nullptr;
- if (xWindowManagerComponent.is())
- xWindowManagerComponent->dispose();
-
if (mxController.is())
{
Reference<frame::XFrame> xFrame (mxController->getFrame());
@@ -218,6 +212,12 @@ void PresenterController::disposing()
mxController = nullptr;
}
+ Reference<XComponent> xWindowManagerComponent (
+ static_cast<XWeak*>(mpWindowManager.get()), UNO_QUERY);
+ mpWindowManager = nullptr;
+ if (xWindowManagerComponent.is())
+ xWindowManagerComponent->dispose();
+
mxComponentContext = nullptr;
mxConfigurationController = nullptr;
mxSlideShowController = nullptr;
diff --git a/svx/source/form/datanavi.cxx b/svx/source/form/datanavi.cxx
index 4fe1e926d186..a9f4c02b1ab5 100644
--- a/svx/source/form/datanavi.cxx
+++ b/svx/source/form/datanavi.cxx
@@ -1307,6 +1307,10 @@ namespace svxform
DataNavigatorWindow::~DataNavigatorWindow()
{
+ Reference< XFrameActionListener > xListener(
+ static_cast< XFrameActionListener* >( m_xDataListener.get() ), UNO_QUERY );
+ m_xFrame->removeFrameActionListener( xListener );
+
SvtViewOptions aViewOpt( EViewType::TabDialog, CFGNAME_DATANAVIGATOR );
aViewOpt.SetPageID(m_xTabCtrl->get_current_page_ident());
aViewOpt.SetUserItem(CFGNAME_SHOWDETAILS, Any(m_bShowDetails));
@@ -1320,9 +1324,6 @@ namespace svxform
m_aPageList[i].reset();
m_aPageList.clear();
- Reference< XFrameActionListener > xListener(
- static_cast< XFrameActionListener* >( m_xDataListener.get() ), UNO_QUERY );
- m_xFrame->removeFrameActionListener( xListener );
RemoveBroadcaster();
m_xDataListener.clear();
}