From de5994890bdd7a1f20979a1829d9ea01b746b2d7 Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Tue, 15 Apr 2014 23:34:37 +0200 Subject: fdo#77027: ODF import: fix wrong version in check for embedded objects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SvXMLImport::LO_4x does not mean 4.0+ any more. (regression from 92cb21ebeda98c5193c50c4cf7ef3d60611c2a52) (cherry picked from commit 25a2eab22798373b8197f1e594568207eb7c5039) Conflicts: sd/qa/unit/import-tests.cxx Change-Id: Ib444762c2d6e4d051e99962eaff1b1ed34af983a Reviewed-on: https://gerrit.libreoffice.org/9064 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- sd/qa/unit/data/odp/fdo77027.odp | Bin 0 -> 13229 bytes sd/qa/unit/import-tests.cxx | 37 +++++++++++++++++++++++++++++++++++++ xmloff/source/draw/ximpshap.cxx | 2 +- 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 sd/qa/unit/data/odp/fdo77027.odp diff --git a/sd/qa/unit/data/odp/fdo77027.odp b/sd/qa/unit/data/odp/fdo77027.odp new file mode 100644 index 000000000000..4d834d4683c7 Binary files /dev/null and b/sd/qa/unit/data/odp/fdo77027.odp differ diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index 991f5fef1e81..7fddb392f049 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -18,6 +18,10 @@ #include #include +#include +#include +#include +#include #include #include @@ -43,6 +47,7 @@ class SdFiltersTest : public SdModelTestBase public: void testDocumentLayout(); void testSmoketest(); + void testFdo77027(); void testN759180(); void testN778859(); void testFdo64512(); @@ -53,6 +58,7 @@ public: CPPUNIT_TEST_SUITE(SdFiltersTest); CPPUNIT_TEST(testDocumentLayout); CPPUNIT_TEST(testSmoketest); + CPPUNIT_TEST(testFdo77027); CPPUNIT_TEST(testN759180); CPPUNIT_TEST(testN778859); CPPUNIT_TEST(testFdo64512); @@ -243,6 +249,37 @@ void SdFiltersTest::testN778859() } } +// FIXME copypasta +std::ostream& operator<<(std::ostream& rStrm, const Color& rColor) +{ + rStrm << "Color: R:" << rColor.GetRed() << " G:" << rColor.GetGreen() << " B: << rColor.GetBlue()"; + return rStrm; +} + +void SdFiltersTest::testFdo77027() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/odp/fdo77027.odp")); + + SdDrawDocument *pDoc = xDocShRef->GetDoc(); + CPPUNIT_ASSERT_MESSAGE( "no document", pDoc != NULL ); + const SdrPage *pPage = pDoc->GetPage(1); + CPPUNIT_ASSERT_MESSAGE( "no page", pPage != NULL ); + { + SdrOle2Obj *const pObj = dynamic_cast(pPage->GetObj(0)); + CPPUNIT_ASSERT(pObj); + + // check that the fill style/color was actually imported + const XFillStyleItem& rStyleItem = dynamic_cast( + pObj->GetMergedItem(XATTR_FILLSTYLE)); + CPPUNIT_ASSERT_EQUAL(XFILL_SOLID, rStyleItem.GetValue()); + const XFillColorItem& rColorItem = dynamic_cast( + pObj->GetMergedItem(XATTR_FILLCOLOR)); + CPPUNIT_ASSERT_EQUAL(Color(0xff6600), rColorItem.GetColorValue()); + } + + xDocShRef->DoClose(); +} + void SdFiltersTest::testFdo64512() { ::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/fdo64512.odp")); diff --git a/xmloff/source/draw/ximpshap.cxx b/xmloff/source/draw/ximpshap.cxx index bb3a49fa878d..ae94d31793d6 100644 --- a/xmloff/source/draw/ximpshap.cxx +++ b/xmloff/source/draw/ximpshap.cxx @@ -2677,7 +2677,7 @@ void SdXMLObjectShapeContext::StartElement( const ::com::sun::star::uno::Referen void SdXMLObjectShapeContext::EndElement() { if (GetImport().isGeneratorVersionOlderThan( - SvXMLImport::OOo_34x, SvXMLImport::LO_4x)) + SvXMLImport::OOo_34x, SvXMLImport::LO_41x)) // < LO 4.0 { // #i118485# // If it's an old file from us written before OOo3.4, we need to correct -- cgit