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

Miklos Vajna vmiklos at collabora.co.uk
Thu Oct 8 04:28:38 PDT 2015


 sw/qa/extras/ooxmlimport/data/tdf90153.docx   |binary
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx      |    6 ++++++
 writerfilter/source/dmapper/GraphicImport.cxx |    8 ++++++--
 3 files changed, 12 insertions(+), 2 deletions(-)

New commits:
commit f98d09c8325c642f0463f2e65ff57be0498e9c23
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Mon Sep 28 09:03:13 2015 +0200

    tdf#90153 DOCX import: fix default sw TextFrame roundtrip
    
    The AnchorType of the shape was at-paragraph, which does not allow
    line-level VertOrientRelation (which is correct, it would be undefined,
    what line of the paragraph should be the used).
    
    Fix this by changing the AnchorType to at-character in the line-level
    case, which brings the filter in sync with the DOC one.
    
    With this, import of a DOCX file that was created by inserting a
    TextFrame into an empty document is roundtripped without shifting the
    shape up considerably.
    
    (cherry-picked from commit 358666e4204364ce915ee95372dc6f2fca545253)
    
    Conflicts:
    	sw/qa/extras/ooxmlimport/ooxmlimport.cxx
    
    Change-Id: I6d85c38be859d6e730584f2349c857b87496a1d4
    Reviewed-on: https://gerrit.libreoffice.org/19099
    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>

diff --git a/sw/qa/extras/ooxmlimport/data/tdf90153.docx b/sw/qa/extras/ooxmlimport/data/tdf90153.docx
new file mode 100644
index 0000000..decbfa2
Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/tdf90153.docx differ
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index b00b532..dc460b5 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -2795,6 +2795,12 @@ DECLARE_OOXMLIMPORT_TEST(testTdf92124, "tdf92124.docx")
     CPPUNIT_ASSERT(aSuffix.isEmpty());
 }
 
+DECLARE_OOXMLIMPORT_TEST(testTdf90153, "tdf90153.docx")
+{
+    // This was at-para, so the line-level VertOrientRelation was lost, resulting in an incorrect vertical position.
+    CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_CHARACTER, getProperty<text::TextContentAnchorType>(getShape(1), "AnchorType"));
+}
+
 #endif
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx
index 154b9e2..1b0644d 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -823,8 +823,12 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue)
                         // If we are here, this is a drawingML shape. For those, only dmapper (and not oox) knows the anchoring infos (just like for Writer pictures).
                         // But they aren't Writer pictures, either (which are already handled above).
                         uno::Reference< beans::XPropertySet > xShapeProps(m_xShape, uno::UNO_QUERY_THROW);
-                        // This needs to be AT_PARAGRAPH and not AT_CHARACTER, otherwise shape will move when the user inserts a new paragraph.
-                        xShapeProps->setPropertyValue("AnchorType", uno::makeAny(text::TextContentAnchorType_AT_PARAGRAPH));
+
+                        // This needs to be AT_PARAGRAPH by default and not AT_CHARACTER, otherwise shape will move when the user inserts a new paragraph.
+                        text::TextContentAnchorType eAnchorType = text::TextContentAnchorType_AT_PARAGRAPH;
+                        if (m_pImpl->nVertRelation == text::RelOrientation::TEXT_LINE)
+                            eAnchorType = text::TextContentAnchorType_AT_CHARACTER;
+                        xShapeProps->setPropertyValue("AnchorType", uno::makeAny(eAnchorType));
 
                         //only the position orientation is handled in applyPosition()
                         m_pImpl->applyPosition(xShapeProps);


More information about the Libreoffice-commits mailing list