[Libreoffice-commits] core.git: Branch 'libreoffice-5-4-7' - sw/qa sw/source

Miklos Vajna vmiklos at collabora.co.uk
Mon May 7 10:39:00 UTC 2018


 sw/qa/extras/ooxmlexport/data/tdf116985.docx |binary
 sw/qa/extras/ooxmlexport/ooxmlexport9.cxx    |   10 ++++++++++
 sw/source/core/layout/anchoreddrawobject.cxx |   17 ++++++++++++++++-
 3 files changed, 26 insertions(+), 1 deletion(-)

New commits:
commit 3ead159607641f91bf220c574e7fd87c95d2e834
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Fri Apr 13 15:09:53 2018 +0200

    tdf#116985 sw: fix geometry of textbox of shape with relative size
    
    Relative size of shapes are calculated by the layout, so the normal doc
    model-level synchronization between the shape and its textbox was not
    enough.
    
    (cherry picked from commit c8b976ac64c9cac360f7c4fd9844fcfac7ba25a8)
    
    Conflicts:
            sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
    
    Change-Id: Ia6f460132efaf03a7ba3a023cf751f6fff74404d
    Reviewed-on: https://gerrit.libreoffice.org/52985
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 2b39c6821929041d0806125720c56525df40c455)
    Reviewed-on: https://gerrit.libreoffice.org/53740
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
    Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
    Tested-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>

diff --git a/sw/qa/extras/ooxmlexport/data/tdf116985.docx b/sw/qa/extras/ooxmlexport/data/tdf116985.docx
new file mode 100644
index 000000000000..2a8e2023884d
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf116985.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
index dd3b9759cf4b..d4443761dd90 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
@@ -723,6 +723,16 @@ DECLARE_OOXMLEXPORT_TEST(testTdf116976, "tdf116976.docx")
                          getProperty<sal_Int16>(getShape(1), "RelativeWidth"));
 }
 
+DECLARE_OOXMLEXPORT_TEST(testTdf116985, "tdf116985.docx")
+{
+    // Body frame width is 10800, 40% is the requested relative width, with 144
+    // spacing to text on the left/right side.  So ideal width would be 4032,
+    // was 3431. Allow one pixel tolerance, though.
+    sal_Int32 nWidth
+        = parseDump("/root/page[1]/body/txt[1]/anchored/fly/infos/bounds", "width").toInt32();
+    CPPUNIT_ASSERT(nWidth > 4000);
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/layout/anchoreddrawobject.cxx b/sw/source/core/layout/anchoreddrawobject.cxx
index 9d450f9a26f7..8bdf1dbf587f 100644
--- a/sw/source/core/layout/anchoreddrawobject.cxx
+++ b/sw/source/core/layout/anchoreddrawobject.cxx
@@ -32,6 +32,8 @@
 #include <IDocumentState.hxx>
 #include <txtfly.hxx>
 #include <viewimp.hxx>
+#include <textboxhelper.hxx>
+#include <unomid.h>
 
 using namespace ::com::sun::star;
 
@@ -661,9 +663,22 @@ const SwRect SwAnchoredDrawObject::GetObjBoundRect() const
 
             bool bEnableSetModified = pDoc->getIDocumentState().IsEnableSetModified();
             pDoc->getIDocumentState().SetEnableSetModified(false);
-            const_cast< SdrObject* >( GetDrawObj() )->Resize( aCurrObjRect.TopLeft(),
+            auto pObject = const_cast<SdrObject*>(GetDrawObj());
+            pObject->Resize( aCurrObjRect.TopLeft(),
                     Fraction( nTargetWidth, aCurrObjRect.GetWidth() ),
                     Fraction( nTargetHeight, aCurrObjRect.GetHeight() ), false );
+
+            if (SwFrameFormat* pFrameFormat = FindFrameFormat(pObject))
+            {
+                if (SwTextBoxHelper::isTextBox(pFrameFormat, RES_DRAWFRMFMT))
+                {
+                    // Shape has relative size and also a textbox, update its text area as well.
+                    uno::Reference<drawing::XShape> xShape(pObject->getUnoShape(), uno::UNO_QUERY);
+                    SwTextBoxHelper::syncProperty(pFrameFormat, RES_FRM_SIZE, MID_FRMSIZE_SIZE,
+                                                  uno::makeAny(xShape->getSize()));
+                }
+            }
+
             pDoc->getIDocumentState().SetEnableSetModified(bEnableSetModified);
         }
     }


More information about the Libreoffice-commits mailing list