[Libreoffice-commits] core.git: Branch 'libreoffice-5-3' - framework/source

Caolán McNamara caolanm at redhat.com
Thu Feb 9 19:22:32 UTC 2017


 framework/source/services/frame.cxx |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

New commits:
commit 2be5e763d2e03bffc692d40106212fe52a7b7304
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Feb 9 15:10:53 2017 +0000

    Resolves: tdf#66237 set layout manager the way it used to
    
    model Frame::setLayoutManager after the Frame::impl_setPropertyValue handler
    for FRAME_PROPHANDLE_LAYOUTMANAGER which used to be used before
    
    commit b248624126c271c88381d3dad6e04fc954f65779
    Date:   Fri Mar 22 09:24:15 2013 +0200
    
        fdo#46808, Convert frame::Frame to new style
    
    i.e.
    
    - Reference< XPropertySet > xFrameProps( m_xFrame, UNO_QUERY_THROW );
    - xFrameProps->setPropertyValue( OUString( "LayoutManager" ), makeAny(Reference< XLayoutManager >()) );
    + m_xFrame->setLayoutManager( Reference< XLayoutManager >() );
    
    Change-Id: I00f1a2cb8e4fafc6d484634619cbeaf58c603d87
    (cherry picked from commit 6851074c8a515ec5a7856d4b744e3425c8829a29)
    Reviewed-on: https://gerrit.libreoffice.org/34094
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/framework/source/services/frame.cxx b/framework/source/services/frame.cxx
index 09e5104..88de578 100644
--- a/framework/source/services/frame.cxx
+++ b/framework/source/services/frame.cxx
@@ -1947,7 +1947,18 @@ void SAL_CALL Frame::setLayoutManager(const css::uno::Reference<css::uno::XInter
 {
     checkDisposed();
     SolarMutexGuard g;
-    m_xLayoutManager.set(p1, css::uno::UNO_QUERY);
+
+    css::uno::Reference<css::frame::XLayoutManager2> xOldLayoutManager = m_xLayoutManager;
+    css::uno::Reference<css::frame::XLayoutManager2> xNewLayoutManager(p1, css::uno::UNO_QUERY);
+
+    if (xOldLayoutManager != xNewLayoutManager)
+    {
+        m_xLayoutManager = xNewLayoutManager;
+        if (xOldLayoutManager.is())
+            disableLayoutManager(xOldLayoutManager);
+        if (xNewLayoutManager.is())
+            lcl_enableLayoutManager(xNewLayoutManager, this);
+    }
 }
 
 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL Frame::getPropertySetInfo()


More information about the Libreoffice-commits mailing list