sw/CppunitTest_sw_ooxmlimport.mk | 1 + sw/qa/extras/ooxmlimport/data/tdf97371.docx |binary sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 15 +++++++++++++++ writerfilter/source/dmapper/GraphicImport.cxx | 7 ++++++- 4 files changed, 22 insertions(+), 1 deletion(-)
New commits: commit 2f4fce056bc6025c924466aaf7635e2b385cecbb Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Thu Jan 28 17:52:40 2016 +0100 tdf#97371 DOCX import: fix text covered by shape Regression from commit 358666e4204364ce915ee95372dc6f2fca545253 (tdf#90153 DOCX import: fix default sw TextFrame roundtrip, 2015-09-28), the problem was that at the moment SwTextBoxHelper::syncProperty() doesn't handle an AnchorType at-para -> at-char transition, so the importer shouldn't do that for TextBoxes till sw core gets extended to support the scenario. (cherry picked from commit 8f1a1092d47947847e1d888b0284e8364c663d1f) Conflicts: sw/qa/extras/ooxmlimport/ooxmlimport.cxx Change-Id: I8308bfd306672bc68984fbf019767c174130e18d Reviewed-on: https://gerrit.libreoffice.org/22483 Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/sw/CppunitTest_sw_ooxmlimport.mk b/sw/CppunitTest_sw_ooxmlimport.mk index 5aae15d..c934d09 100644 --- a/sw/CppunitTest_sw_ooxmlimport.mk +++ b/sw/CppunitTest_sw_ooxmlimport.mk @@ -27,6 +27,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_ooxmlimport, \ sw \ tl \ vcl \ + svxcore \ $(gb_UWINAPI) \ )) diff --git a/sw/qa/extras/ooxmlimport/data/tdf97371.docx b/sw/qa/extras/ooxmlimport/data/tdf97371.docx new file mode 100644 index 0000000..87e67dd Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/tdf97371.docx differ diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index 9ca419c..fec79d3 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -74,10 +74,12 @@ #include <comphelper/sequenceashashmap.hxx> #include <com/sun/star/text/GraphicCrop.hpp> #include <swtypes.hxx> +#include <drawdoc.hxx> #include <tools/datetimeutils.hxx> #include <oox/drawingml/drawingmltypes.hxx> #include <unotools/streamwrap.hxx> #include <comphelper/propertysequence.hxx> +#include <svx/svdpage.hxx> #include <com/sun/star/drawing/HomogenMatrix3.hpp> #include <bordertest.hxx> @@ -3064,6 +3066,19 @@ DECLARE_OOXMLIMPORT_TEST(testTdf95213, "tdf95213.docx") CPPUNIT_ASSERT_EQUAL(awt::FontWeight::NORMAL, getProperty<float>(xStyle, "CharWeight")); } +DECLARE_OOXMLIMPORT_TEST(testTdf97371, "tdf97371.docx") +{ + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument *>(mxComponent.get()); + CPPUNIT_ASSERT(pTextDoc); + SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + SdrPage* pPage = pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0); + SdrObject* pShape = pPage->GetObj(0); + SdrObject* pTextBox = pPage->GetObj(1); + long nDiff = std::abs(pShape->GetSnapRect().Top() - pTextBox->GetSnapRect().Top()); + // The top of the two shapes were 410 and 3951, now it should be 3950 and 3951. + CPPUNIT_ASSERT(nDiff < 10); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx index a9d3225..735687d 100644 --- a/writerfilter/source/dmapper/GraphicImport.cxx +++ b/writerfilter/source/dmapper/GraphicImport.cxx @@ -805,8 +805,13 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue) // 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) + + // Avoid setting AnchorType for TextBoxes till SwTextBoxHelper::syncProperty() doesn't handle transition. + bool bTextBox = false; + xShapeProps->getPropertyValue("TextBox") >>= bTextBox; + if (m_pImpl->nVertRelation == text::RelOrientation::TEXT_LINE && !bTextBox) eAnchorType = text::TextContentAnchorType_AT_CHARACTER; + xShapeProps->setPropertyValue("AnchorType", uno::makeAny(eAnchorType)); //only the position orientation is handled in applyPosition()
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits