sc/qa/unit/data/ods/cell-anchored-shapes.ods |binary sc/qa/unit/subsequent_filters-test.cxx | 41 +++++++++++++++++++++++++++ sc/source/filter/xml/xmlimprt.cxx | 3 + 3 files changed, 44 insertions(+)
New commits: commit a7a12bd3dee32db44a6b50a68ab700dc8ce437df Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Tue Aug 14 17:16:18 2012 -0400 New unit test for importing cell-anchored shapes from ods. Change-Id: I3cedafaf1862c69a40a7973ed056bf595f9e7d20 diff --git a/sc/qa/unit/data/ods/cell-anchored-shapes.ods b/sc/qa/unit/data/ods/cell-anchored-shapes.ods new file mode 100644 index 0000000..5a006f6 Binary files /dev/null and b/sc/qa/unit/data/ods/cell-anchored-shapes.ods differ diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx index 8d6a804..95009ac 100644 --- a/sc/qa/unit/subsequent_filters-test.cxx +++ b/sc/qa/unit/subsequent_filters-test.cxx @@ -38,6 +38,7 @@ #include <sfx2/docfile.hxx> #include <sfx2/sfxmodelfactory.hxx> #include <svl/stritem.hxx> +#include "svx/svdpage.hxx" #include <editeng/brshitem.hxx> #include <editeng/justifyitem.hxx> @@ -45,6 +46,8 @@ #include <dbdata.hxx> #include "validat.hxx" #include "cell.hxx" +#include "drwlayer.hxx" +#include "userdat.hxx" #include <com/sun/star/drawing/XDrawPageSupplier.hpp> #include <com/sun/star/drawing/XControlShape.hpp> @@ -151,6 +154,8 @@ public: void testNumberFormatHTML(); void testNumberFormatCSV(); + void testCellAnchoredShapesODS(); + CPPUNIT_TEST_SUITE(ScFiltersTest); CPPUNIT_TEST(testRangeNameXLS); CPPUNIT_TEST(testRangeNameXLSX); @@ -187,6 +192,8 @@ public: CPPUNIT_TEST(testNumberFormatHTML); CPPUNIT_TEST(testNumberFormatCSV); + CPPUNIT_TEST(testCellAnchoredShapesODS); + //disable testPassword on MacOSX due to problems with libsqlite3 //also crashes on DragonFly due to problems with nss/nspr headers #if !defined(MACOSX) && !defined(DRAGONFLY) && !defined(WNT) @@ -1243,6 +1250,40 @@ void ScFiltersTest::testNumberFormatCSV() xDocSh->DoClose(); } +void ScFiltersTest::testCellAnchoredShapesODS() +{ + OUString aFileNameBase("cell-anchored-shapes."); + OUString aFileExt = OUString::createFromAscii(aFileFormats[ODS].pName); + OUString aFilterName = OUString::createFromAscii(aFileFormats[ODS].pFilterName); + OUString aFilterType = OUString::createFromAscii(aFileFormats[ODS].pTypeName); + + rtl::OUString aFileName; + createFileURL(aFileNameBase, aFileExt, aFileName); + ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[ODS].nFormatType); + CPPUNIT_ASSERT_MESSAGE("Failed to load cell-anchored-shapes.ods", xDocSh.Is()); + + // There are two cell-anchored objects on the first sheet. + ScDocument* pDoc = xDocSh->GetDocument(); + + CPPUNIT_ASSERT_MESSAGE("There should be at least one sheet.", pDoc->GetTableCount() > 0); + + ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer(); + SdrPage* pPage = pDrawLayer->GetPage(0); + CPPUNIT_ASSERT_MESSAGE("draw page for sheet 1 should exist.", pPage); + sal_uIntPtr nCount = pPage->GetObjCount(); + CPPUNIT_ASSERT_MESSAGE("There should be 2 objects.", nCount == 2); + for (sal_uIntPtr i = 0; i < nCount; ++i) + { + SdrObject* pObj = pPage->GetObj(i); + CPPUNIT_ASSERT_MESSAGE("Failed to get drawing object.", pObj); + ScDrawObjData* pData = ScDrawLayer::GetObjData(pObj, false); + CPPUNIT_ASSERT_MESSAGE("Failed to retrieve user data for this object.", pData); + CPPUNIT_ASSERT_MESSAGE("Bounding rectangle should have been calculated upon import.", !pData->maLastRect.IsEmpty()); + } + + xDocSh->DoClose(); +} + void ScFiltersTest::testColorScale() { const rtl::OUString aFileNameBase(RTL_CONSTASCII_USTRINGPARAM("colorScale.")); commit 4606ca07de17c930b658206a19446516cf0d4eb7 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Tue Aug 14 16:46:44 2012 -0400 Calculate positions of cell-anchored objects upon ods import. Since we no longer re-calc row heights on ods import, we need to do this manually, in order to position cell-anchored objects correctly. Previously we were getting this for free since the row height recalc code path did it as part of it. Change-Id: I8ab5dd1fe7cd8a45b7968e101c893b442d7ce132 diff --git a/sc/source/filter/xml/xmlimprt.cxx b/sc/source/filter/xml/xmlimprt.cxx index dcf37b4..4f2ff59 100644 --- a/sc/source/filter/xml/xmlimprt.cxx +++ b/sc/source/filter/xml/xmlimprt.cxx @@ -3101,8 +3101,11 @@ throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeE SCTAB nTabCount = pDoc->GetTableCount(); for (SCTAB nTab=0; nTab<nTabCount; ++nTab) + { + pDoc->SetDrawPageSize(nTab); if (!pSheetData->IsSheetBlocked( nTab )) pDoc->SetStreamValid( nTab, true ); + } } aTables.FixupOLEs(); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits