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

Szabolcs Toth (via logerrit) logerrit at kemper.freedesktop.org
Fri Jun 26 10:55:41 UTC 2020


 sw/qa/extras/ooxmlexport/data/tdf133670_testRelativeAnchorWidthFromRightMargin.docx |binary
 sw/qa/extras/ooxmlexport/ooxmlexport4.cxx                                           |   13 ++++++++++
 sw/source/core/layout/anchoreddrawobject.cxx                                        |    3 ++
 writerfilter/source/dmapper/GraphicImport.cxx                                       |    8 ++++++
 4 files changed, 24 insertions(+)

New commits:
commit 718683ab1582849ea43797e404c6453ce2fbd424
Author:     Szabolcs Toth <szabolcs450 at gmail.com>
AuthorDate: Fri Jun 5 12:06:22 2020 +0200
Commit:     Adolfo Jayme Barrientos <fitojb at ubuntu.com>
CommitDate: Fri Jun 26 12:55:09 2020 +0200

    tdf#133670 DOCX import: fix shape width relative to right margin
    
    using UNO API RelativeWidthRelation and the associated
    lo-ext attribute for OpenDocument export.
    
    See commit 43d7f4e3640c5e370fd1204739c2b0c7eb5f40e4
    (offapi: document the 4 new properties which are no longer read-only).
    
    Co-authored-by: Balázs Regényi
    
    Change-Id: Ic5d25701d46cdace6502ec55dbc0e5f0ebd7742b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95582
    Tested-by: László Németh <nemeth at numbertext.org>
    Reviewed-by: László Németh <nemeth at numbertext.org>
    (cherry picked from commit 330ed8120e9881656716d70d87b9f49f861f0bfa)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97067
    Tested-by: Jenkins
    Reviewed-by: Adolfo Jayme Barrientos <fitojb at ubuntu.com>

diff --git a/sw/qa/extras/ooxmlexport/data/tdf133670_testRelativeAnchorWidthFromRightMargin.docx b/sw/qa/extras/ooxmlexport/data/tdf133670_testRelativeAnchorWidthFromRightMargin.docx
new file mode 100644
index 000000000000..68f24370a31e
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf133670_testRelativeAnchorWidthFromRightMargin.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
index 5289dec3dfc5..791d32e26435 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
@@ -1229,6 +1229,19 @@ DECLARE_OOXMLEXPORT_TEST(testUnderlineColorGroupedShapes, "tdf132491_UnderlineCo
         "/a:graphic/a:graphicData/wpg:wgp/wps:wsp[3]/wps:txbx/w:txbxContent/w:p/w:r/w:rPr/w:u", "color");
 }
 
+DECLARE_OOXMLEXPORT_TEST(testRelativeAnchorWidthFromRightMargin, "tdf133670_testRelativeAnchorWidthFromRightMargin.docx")
+{
+    // TODO: Fix export.
+    if (mbExported)
+        return;
+
+    // tdf#133670 The width was set relative from right margin, but this was handled relative from page width.
+    xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+    const sal_Int32 nAnchoredWidth
+        = getXPath(pXmlDoc, "//SwAnchoredDrawObject/bounds", "width").toInt32();
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2408), nAnchoredWidth);
+}
+
 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 4789ae807239..ae7ecf1ea295 100644
--- a/sw/source/core/layout/anchoreddrawobject.cxx
+++ b/sw/source/core/layout/anchoreddrawobject.cxx
@@ -641,6 +641,9 @@ SwRect SwAnchoredDrawObject::GetObjBoundRect() const
             // E.g.: (left margin = 8 && relative size = 150%) -> width of some shape = 12.
             else if (GetDrawObj()->GetRelativeWidthRelation() == text::RelOrientation::PAGE_LEFT)
                 nWidth = GetPageFrame()->GetLeftMargin();
+            // Same as the left margin above.
+            else if (GetDrawObj()->GetRelativeWidthRelation() == text::RelOrientation::PAGE_RIGHT)
+                nWidth = GetPageFrame()->GetRightMargin();
             else
                 nWidth = GetPageFrame( )->GetBoundRect( GetPageFrame()->getRootFrame()->GetCurrShell()->GetOut() ).SVRect().GetWidth();
             nTargetWidth = nWidth * (*GetDrawObj( )->GetRelativeWidth());
diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx
index d7128080dfeb..3773329c6a48 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -955,6 +955,14 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue)
                         xPropertySet->setPropertyValue("RelativeWidthRelation", uno::makeAny(text::RelOrientation::PAGE_LEFT));
                     }
                     break;
+                case NS_ooxml::LN_ST_SizeRelFromH_rightMargin:
+                    if (m_xShape.is())
+                    {
+                        // Same as the left margin above.
+                        uno::Reference<beans::XPropertySet> xPropertySet(m_xShape, uno::UNO_QUERY);
+                        xPropertySet->setPropertyValue("RelativeWidthRelation", uno::makeAny(text::RelOrientation::PAGE_RIGHT));
+                    }
+                    break;
                 case NS_ooxml::LN_ST_SizeRelFromH_page:
                     if (m_xShape.is())
                     {


More information about the Libreoffice-commits mailing list