From 013beaceb8c6daf2bf7f804631a3385e35144152 Mon Sep 17 00:00:00 2001 From: Matúš Kukan Date: Mon, 23 Nov 2015 22:07:12 +0100 Subject: Make this static WeakReference local to Frame::impl_checkMenuCloser() ..to avoid problem shown with comphelper added to libmerged. More info in http://lists.freedesktop.org/archives/libreoffice/2015-November/071189.html (cherry picked from commit c6122fe6143ff1efa9f449d46a848cf3071ac67e) Apparently it was problem also without merged comphelper. Seen in CppunitTest_libreofficekit_tiledrendering in libreoffice-5-1. Change-Id: I2017d87f64f1ae3a1a1cf2e50bce24c05cff6321 Reviewed-on: https://gerrit.libreoffice.org/21243 Tested-by: Jenkins Reviewed-by: Miklos Vajna --- framework/source/services/frame.cxx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'framework/source/services') diff --git a/framework/source/services/frame.cxx b/framework/source/services/frame.cxx index 754768e7d47b..bcd12d4cc6bb 100644 --- a/framework/source/services/frame.cxx +++ b/framework/source/services/frame.cxx @@ -402,7 +402,6 @@ private: SvtCommandOptions m_aCommandOptions; /// ref counted class to support disabling commands defined by configuration file bool m_bSelfClose; /// in case of CloseVetoException on method close() was thrown by ourself - we must close ourself later if no internal processes are running bool m_bIsHidden; /// indicates, if this frame is used in hidden mode or not - static css::uno::WeakReference< css::frame::XFrame2 > m_xCloserFrame; /// holds the only frame, which must show the special closer menu item (can be NULL!) css::uno::Reference< css::frame::XLayoutManager2 > m_xLayoutManager; /// is used to layout the child windows of the frame. css::uno::Reference< css::frame::XDispatchInformationProvider > m_xDispatchInfoHelper; css::uno::Reference< css::frame::XTitle > m_xTitleHelper; @@ -414,8 +413,6 @@ protected: FrameContainer m_aChildFrameContainer; /// array of child frames }; -css::uno::WeakReference< css::frame::XFrame2 > Frame::m_xCloserFrame; - // XInterface, XTypeProvider, XServiceInfo DEFINE_XINTERFACE_22 ( Frame , @@ -3206,15 +3203,16 @@ void Frame::impl_checkMenuCloser() // Only if the closer state must be moved from one frame to another one // or must be enabled/disabled at all. SolarMutexGuard aGuard; - - css::uno::Reference< css::frame::XFrame2 > xCloserFrame (m_xCloserFrame.get(), css::uno::UNO_QUERY); + // Holds the only frame, which must show the special closer menu item (can be NULL!) + static css::uno::WeakReference< css::frame::XFrame2 > s_xCloserFrame; + css::uno::Reference< css::frame::XFrame2 > xCloserFrame (s_xCloserFrame.get(), css::uno::UNO_QUERY); if (xCloserFrame!=xNewCloserFrame) { if (xCloserFrame.is()) impl_setCloser(xCloserFrame, false); if (xNewCloserFrame.is()) impl_setCloser(xNewCloserFrame, true); - m_xCloserFrame = xNewCloserFrame; + s_xCloserFrame = xNewCloserFrame; } } -- cgit