diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2018-07-31 15:25:18 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2018-07-31 17:58:00 +0200 |
commit | d6f73641ff10286339562075e11c7cbb8e3d2b74 (patch) | |
tree | 1f8822c39dd97c7415fd2be1b8ee57d9c8bda69c /sd | |
parent | 52a13e485f6b16eb8be5168897b24931f7a291de (diff) |
tdf#119015: don't call TableModel::optimize in CellCursor::merge()
Better do that explicitly in the SvxTableController::MergeRange, so
that the UI-driven operation still optimizes the table, but import
code gets the initial column count, and not throw trying to access
the deleted column.
Change-Id: Ib4b4d716935ec2036ccb839c36f1be5b0cb878d5
Reviewed-on: https://gerrit.libreoffice.org/58359
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'sd')
-rw-r--r-- | sd/qa/unit/data/pptx/tdf119015.pptx | bin | 0 -> 11652 bytes | |||
-rw-r--r-- | sd/qa/unit/import-tests.cxx | 24 |
2 files changed, 24 insertions, 0 deletions
diff --git a/sd/qa/unit/data/pptx/tdf119015.pptx b/sd/qa/unit/data/pptx/tdf119015.pptx Binary files differnew file mode 100644 index 000000000000..8c2313ad9b27 --- /dev/null +++ b/sd/qa/unit/data/pptx/tdf119015.pptx diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index 3159a7ed9ce8..2427b3dbdc20 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -188,6 +188,7 @@ public: bool checkPattern(sd::DrawDocShellRef const & rDocRef, int nShapeNumber, std::vector<sal_uInt8>& rExpected); void testPatternImport(); void testPptCrop(); + void testTdf119015(); CPPUNIT_TEST_SUITE(SdImportTest); @@ -269,6 +270,7 @@ public: CPPUNIT_TEST(testTdf77747); CPPUNIT_TEST(testTdf116266); CPPUNIT_TEST(testPptCrop); + CPPUNIT_TEST(testTdf119015); CPPUNIT_TEST_SUITE_END(); }; @@ -2533,6 +2535,28 @@ void SdImportTest::testTdf116266() CPPUNIT_ASSERT_EQUAL(size_t(1), rLinkManager->GetLinks().size()); } +void SdImportTest::testTdf119015() +{ + ::sd::DrawDocShellRef xDocShRef + = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/tdf119015.pptx"), PPTX); + + const SdrPage* pPage = GetPage(1, xDocShRef); + + sdr::table::SdrTableObj* pTableObj = dynamic_cast<sdr::table::SdrTableObj*>(pPage->GetObj(0)); + CPPUNIT_ASSERT(pTableObj); + // The position was previously not properly initialized: (0, 0, 100, 100) + CPPUNIT_ASSERT_EQUAL(tools::Rectangle(Point(6991, 6902), Size(14099, 1999)), + pTableObj->GetLogicRect()); + uno::Reference<table::XTable> xTable(pTableObj->getTable()); + + // Test that we actually have three cells: this threw css.lang.IndexOutOfBoundsException + uno::Reference<text::XTextRange> xTextRange(xTable->getCellByPosition(2, 0), + uno::UNO_QUERY_THROW); + CPPUNIT_ASSERT_EQUAL(OUString("A3"), xTextRange->getString()); + + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest); CPPUNIT_PLUGIN_IMPLEMENT(); |