vcl/source/helper/commandinfoprovider.cxx |   14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

New commits:
commit c2d7b58662951c5d482e882ae730e532988d2ea3
Author: Maxim Monastirsky <momonas...@gmail.com>
Date:   Tue Nov 17 18:01:13 2015 +0200

    Need to re-init CommandInfoProvider when component changes
    
    Otherwise many toolbar/menubar labels are missing when
    starting any component from the start center.
    
    Change-Id: I49d009431ae3d1003e5ff395265409b3a5641707

diff --git a/vcl/source/helper/commandinfoprovider.cxx 
b/vcl/source/helper/commandinfoprovider.cxx
index 6a7e868..b04cff3 100644
--- a/vcl/source/helper/commandinfoprovider.cxx
+++ b/vcl/source/helper/commandinfoprovider.cxx
@@ -38,7 +38,7 @@ using namespace css::uno;
 namespace
 {
     typedef ::cppu::WeakComponentImplHelper <
-        css::lang::XEventListener
+        css::frame::XFrameActionListener
         > FrameListenerInterfaceBase;
     class FrameListener
         : public ::cppu::BaseMutex,
@@ -51,15 +51,23 @@ namespace
               mxFrame(rxFrame)
         {
             if (mxFrame.is())
-                mxFrame->addEventListener(this);
+                mxFrame->addFrameActionListener(this);
         }
         virtual ~FrameListener()
         {
         }
+        virtual void SAL_CALL frameAction(const css::frame::FrameActionEvent& 
aEvent)
+            throw (css::uno::RuntimeException, std::exception) override
+        {
+            // The same frame can be reused for a different component, e.g.
+            // starting component from the start center, so need to re-init 
the cached data.
+            if (aEvent.Action == css::frame::FrameAction_COMPONENT_DETACHING)
+                mrInfoProvider.SetFrame(nullptr);
+        }
         virtual void SAL_CALL disposing() override
         {
             if (mxFrame.is())
-                mxFrame->removeEventListener(this);
+                mxFrame->removeFrameActionListener(this);
         }
         virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
             throw (RuntimeException, std::exception) override
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to