sw/qa/extras/ooxmlexport/data/tdf106690-cell.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport9.cxx | 12 ++++++++++++ writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 5 +++++ writerfilter/source/dmapper/DomainMapperTableHandler.hxx | 2 ++ writerfilter/source/dmapper/DomainMapper_Impl.cxx | 5 +++++ writerfilter/source/dmapper/DomainMapper_Impl.hxx | 4 ++++ writerfilter/source/dmapper/TableManager.cxx | 4 ++++ 7 files changed, 32 insertions(+)
New commits: commit 41bc9d4d467495c9fbf05c920a41fa299ac0ace3 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Thu Apr 20 09:12:36 2017 +0200 Related: tdf#106690 DOCX import: don't reduce auto-space accross cells As suggested at <https://gerrit.libreoffice.org/#/c/36142/>, and it indeed matches the Word behavior. Change-Id: I1ba5b70fc5a7acab52fa4baf816e9f6cd2f913ba Reviewed-on: https://gerrit.libreoffice.org/36719 Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> Tested-by: Jenkins <c...@libreoffice.org> diff --git a/sw/qa/extras/ooxmlexport/data/tdf106690-cell.docx b/sw/qa/extras/ooxmlexport/data/tdf106690-cell.docx new file mode 100644 index 000000000000..e2ea6f4b0931 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf106690-cell.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx index a7d53cf39661..3311f1b68184 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx @@ -70,6 +70,18 @@ DECLARE_OOXMLEXPORT_TEST(testTdf106690, "tdf106690.docx") CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(494), getProperty<sal_Int32>(getParagraph(2), "ParaTopMargin")); } +DECLARE_OOXMLEXPORT_TEST(testTdf106690Cell, "tdf106690-cell.docx") +{ + uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY); + uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY); + uno::Reference<text::XTextRange> xCell(xTable->getCellByName("A1"), uno::UNO_QUERY); + // This was 0, bottom margin of the second paragraph in the A1 table cell + // had a reduced auto-space, just because of a next paragraph in the A2 + // cell. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(494), getProperty<sal_Int32>(getParagraphOfText(2, xCell->getText()), "ParaBottomMargin")); +} + DECLARE_OOXMLEXPORT_TEST(testTdf106970, "tdf106970.docx") { // The second paragraph (first numbered one) had 0 bottom margin: diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx index 8fa604a3710c..b79a1d71214b 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx @@ -1266,6 +1266,11 @@ void DomainMapperTableHandler::setHadFootOrEndnote(bool bHadFootOrEndnote) m_bHadFootOrEndnote = bHadFootOrEndnote; } +DomainMapper_Impl& DomainMapperTableHandler::getDomainMapperImpl() +{ + return m_rDMapper_Impl; +} + }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.hxx b/writerfilter/source/dmapper/DomainMapperTableHandler.hxx index 83dafa49a776..4881f37a8d9d 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.hxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.hxx @@ -116,6 +116,8 @@ public: void endCell(const css::uno::Reference< css::text::XTextRange > & end); void setHadFootOrEndnote(bool bHadFootOrEndnote); + + DomainMapper_Impl& getDomainMapperImpl(); }; }} diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index c9369de68e31..912bb6672977 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -2181,6 +2181,11 @@ bool DomainMapper_Impl::IsDiscardHeaderFooter() return m_bDiscardHeaderFooter; } +void DomainMapper_Impl::ClearPreviousParagraph() +{ + m_xPreviousParagraph.clear(); +} + sal_Int16 lcl_ParseNumberingType( const OUString& rCommand ) { sal_Int16 nRet = style::NumberingType::PAGE_DESCRIPTOR; diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index 82547b14325b..de7c95dda550 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -882,6 +882,10 @@ public: void SetParaAutoBefore(bool bParaAutoBefore) { m_bParaAutoBefore = bParaAutoBefore; } + /// Forget about the previous paragraph, as it's not inside the same + /// start/end node. + void ClearPreviousParagraph(); + private: void PushPageHeaderFooter(bool bHeader, SectionPropertyMap::PageType eType); std::vector<css::uno::Reference< css::drawing::XShape > > m_vTextFramesForChaining ; diff --git a/writerfilter/source/dmapper/TableManager.cxx b/writerfilter/source/dmapper/TableManager.cxx index c14ec25b0d28..32b77410e332 100644 --- a/writerfilter/source/dmapper/TableManager.cxx +++ b/writerfilter/source/dmapper/TableManager.cxx @@ -19,6 +19,7 @@ #include <TableManager.hxx> #include <DomainMapperTableHandler.hxx> +#include <DomainMapper_Impl.hxx> #include <util.hxx> namespace writerfilter @@ -201,6 +202,9 @@ void TableManager::closeCell(const css::uno::Reference<css::text::XTextRange>& r TableData::Pointer_t pTableData = mTableDataStack.top(); pTableData->endCell(rHandle); + + if (mpTableDataHandler) + mpTableDataHandler->getDomainMapperImpl().ClearPreviousParagraph(); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits