diff options
-rw-r--r-- | dbaccess/source/ui/browser/unodatbr.cxx | 9 | ||||
-rw-r--r-- | extensions/source/bibliography/framectr.cxx | 5 | ||||
-rw-r--r-- | framework/source/fwe/helper/titlehelper.cxx | 4 | ||||
-rw-r--r-- | framework/source/helper/persistentwindowstate.cxx | 4 | ||||
-rw-r--r-- | framework/source/helper/tagwindowasmodified.cxx | 3 | ||||
-rw-r--r-- | framework/source/helper/titlebarupdate.cxx | 4 | ||||
-rw-r--r-- | framework/source/uielement/resourcemenucontroller.cxx | 6 | ||||
-rw-r--r-- | sdext/source/presenter/PresenterController.cxx | 12 | ||||
-rw-r--r-- | svx/source/form/datanavi.cxx | 7 |
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(); } |