diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2014-02-17 09:37:51 +0100 |
---|---|---|
committer | root <root@linux-3qg3.site> | 2014-02-23 22:26:38 +0100 |
commit | 364682a19713169b374d949d0fc34d105a2be5d4 (patch) | |
tree | 51216f79d980609ee927778d807e7d3b6afda326 | |
parent | 1c33633ef18274bf384c74c492195519be83c050 (diff) |
fdo#74357 DOCX import: fix nested tables anchored inside tables
Regression from bbef85c157169efa958ea1014d91d467cb243e6f (bnc#779620
DOCX import: try harder to convert floating tables to text frames,
2013-10-01), the conversion of nested tables is delayed by default till
we know the page size. However, in case the anchor is in a table, we
should convert it right away, because the conversion of the parent table
would invalidate our XTextRange references.
(cherry picked from commit e5fd7c2dacf3c128cdc62622e736ce8abbc578a5)
Conflicts:
sw/qa/extras/ooxmlimport/ooxmlimport.cxx
Change-Id: Id41556e721c6e1c7239e4ea25abd57c999d2219b
-rw-r--r-- | sw/qa/extras/ooxmlimport/data/fdo74357.docx | bin | 0 -> 11930 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 11 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 5 |
3 files changed, 15 insertions, 1 deletions
diff --git a/sw/qa/extras/ooxmlimport/data/fdo74357.docx b/sw/qa/extras/ooxmlimport/data/fdo74357.docx Binary files differnew file mode 100644 index 000000000000..970372906e29 --- /dev/null +++ b/sw/qa/extras/ooxmlimport/data/fdo74357.docx diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index 32545c23cbc7..dee45c9dd263 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -85,6 +85,7 @@ public: void testN779627(); void testN779941(); void testFdo55187(); + void testFdo74357(); void testN780563(); void testN780853(); void testN780843(); @@ -188,6 +189,7 @@ void Test::run() {"n779627.docx", &Test::testN779627}, {"n779941.docx", &Test::testN779941}, {"fdo55187.docx", &Test::testFdo55187}, + {"fdo74357.docx", &Test::testFdo74357}, {"n780563.docx", &Test::testN780563}, {"n780853.docx", &Test::testN780853}, {"n780843.docx", &Test::testN780843}, @@ -969,6 +971,15 @@ void Test::testN779627() CPPUNIT_ASSERT_EQUAL_MESSAGE("Not centered vertically relatively to page", text::RelOrientation::PAGE_FRAME, nValue); } +void Test::testFdo74357() +{ + // Floating table wasn't converted to a textframe. + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xDrawPage(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY); + // This was 0. + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDrawPage->getCount()); +} + void Test::testFdo55187() { // 0x010d was imported as a newline. diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx index 28be09cc1258..a79bc79e51f5 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx @@ -947,9 +947,12 @@ void DomainMapperTableHandler::endTable(unsigned int nestedTableLevel) // SectionPropertyMap::CloseSectionGroup(), so we'll have no idea // about the text area width, nor can fix this by delaying the text // frame conversion: just do it here. + // Also, we the anchor is within a table, then do it here as well, + // as xStart/xEnd would not point to the start/end at conversion + // time anyway. sal_Int32 nTableWidth = 0; m_aTableProperties->getValue(TablePropertyMap::TABLE_WIDTH, nTableWidth); - if (m_rDMapper_Impl.GetSectionContext()) + if (m_rDMapper_Impl.GetSectionContext() && nestedTableLevel <= 1) m_rDMapper_Impl.m_aPendingFloatingTables.push_back(FloatingTableInfo(xStart, xEnd, aFrameProperties, nTableWidth)); else m_xText->convertToTextFrame(xStart, xEnd, aFrameProperties); |