From 3d5ccc1577ff89bd13c26a8cde787a39482a8b81 Mon Sep 17 00:00:00 2001 From: Justin Luth Date: Fri, 23 Dec 2016 13:49:19 +0300 Subject: tdf#99616 writerfilter: hideMark shouldn't force min size hideMark in Word does not force the minimum possible row size, but simply ignores any cell marker styles/sizings. So an empty row then takes on the "at least" size defined for the row. Change-Id: Id24a52f2a360a5040c2eed5c17757c0d32d03520 Reviewed-on: https://gerrit.libreoffice.org/32380 Tested-by: Jenkins Reviewed-by: Justin Luth Reviewed-by: Miklos Vajna (cherry picked from commit 1a58cdf8af1aba52ce0a376666dd7d742234d7cf) Reviewed-on: https://gerrit.libreoffice.org/32721 --- sw/qa/extras/ooxmlexport/data/tdf99616_hidemarkb.docx | Bin 0 -> 11742 bytes sw/qa/extras/ooxmlexport/ooxmlexport8.cxx | 13 +++++++++++++ .../source/dmapper/DomainMapperTableHandler.cxx | 4 +--- 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100755 sw/qa/extras/ooxmlexport/data/tdf99616_hidemarkb.docx diff --git a/sw/qa/extras/ooxmlexport/data/tdf99616_hidemarkb.docx b/sw/qa/extras/ooxmlexport/data/tdf99616_hidemarkb.docx new file mode 100755 index 000000000000..825108a3cb0d Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf99616_hidemarkb.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx index ace05808eb4f..0dce2c56a1a8 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx @@ -1739,6 +1739,19 @@ DECLARE_OOXMLEXPORT_TEST(testHidemark, "hidemark.docx") CPPUNIT_ASSERT_MESSAGE("table size is less than 7000?",sal_Int32(7000) > getProperty(xTextTable, "Width")); } +DECLARE_OOXMLEXPORT_TEST(testHidemarkb, "tdf99616_hidemarkb.docx") +{ + // Problem was that the smallest possible height was forced, not the min specified size. + uno::Reference xTablesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY); + uno::Reference xTextTable(xTables->getByIndex(0), uno::UNO_QUERY); + uno::Reference xTableRows(xTextTable->getRows(), uno::UNO_QUERY); + // Height should be .5cm + CPPUNIT_ASSERT_EQUAL(sal_Int64(501), getProperty(xTableRows->getByIndex(1), "Height")); + // Size type was MIN, should be FIX to avoid considering the end of paragraph marker. + CPPUNIT_ASSERT_EQUAL(text::SizeType::FIX, getProperty(xTableRows->getByIndex(1), "SizeType")); +} + DECLARE_OOXMLEXPORT_TEST(testBnc891663, "bnc891663.docx") { // The image should be inside a cell, so the text in the following cell should be below it. diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx index 3af9e3b17b4c..81220bdfec2d 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx @@ -928,7 +928,6 @@ css::uno::Sequence DomainMapperTableHandler::endTabl TagLogger::getInstance().startElement("getRowProperties"); #endif - static const int MINLAY = 23; // sw/inc/swtypes.hxx, minimal possible size of frames. css::uno::Sequence aRowProperties( m_aRowProperties.size() ); PropertyMapVector1::const_iterator aRowIter = m_aRowProperties.begin(); PropertyMapVector1::const_iterator aRowIterEnd = m_aRowProperties.end(); @@ -948,9 +947,8 @@ css::uno::Sequence DomainMapperTableHandler::endTabl if (lcl_hideMarks(m_aCellProperties[nRow]) && lcl_emptyRow(m_aTableRanges, nRow)) { // We have CellHideMark on all cells, and also all cells are empty: - // Set the row height to minimal as Word does. + // Force the row height to be exactly as specified, and not just as the minimum suggestion. (*aRowIter)->Insert(PROP_SIZE_TYPE, uno::makeAny(text::SizeType::FIX)); - (*aRowIter)->Insert(PROP_HEIGHT, uno::makeAny(static_cast(ConversionHelper::convertTwipToMM100(MINLAY)))); } aRowProperties[nRow] = (*aRowIter)->GetPropertyValues(); -- cgit v1.2.3