From cbd0fbc287051f918e4adb32b3e9b58dfbf8059d Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Thu, 6 Nov 2014 15:15:29 +0100 Subject: [PATCH] DOCX import: fix handling when cells have fixed widths Commit 74c5ed19f430327988194cdcd6bdff09591a93fa (DOCX import fix for table with auto size, 2013-06-26) correctly recognized that in case the width type is auto, that doesn't always mean text::SizeType::VARIABLE. However, when the size is fixed, then we should simply not do anything, and that'll lead to the right behavior (by setting the column separators on each row), don't try to be smart and try to set TablePropertyMap::TABLE_WIDTH here. Change-Id: I997b88e5fa34bbabe7c6940879c81a1d62d69043 --- .../data/table-auto-column-fixed-size2.docx | Bin 0 -> 12907 bytes sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 9 +++++++++ .../source/dmapper/DomainMapperTableManager.cxx | 11 +---------- 3 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 sw/qa/extras/ooxmlimport/data/table-auto-column-fixed-size2.docx diff --git a/sw/qa/extras/ooxmlimport/data/table-auto-column-fixed-size2.docx b/sw/qa/extras/ooxmlimport/data/table-auto-column-fixed-size2.docx new file mode 100644 index 0000000000000000000000000000000000000000..2125f09da790255ce1a1e86872b0418c6fb12fd4 GIT binary patch literal 12907 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 literal 0 HcmV?d00001 diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index 39925645338e..d4d17663fdec 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -1393,6 +1393,15 @@ DECLARE_OOXMLIMPORT_TEST(testTableAutoColumnFixedSize, "table-auto-column-fixed- CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(3996)), getProperty(xTextTable, "Width")); } +DECLARE_OOXMLIMPORT_TEST(testTableAutoColumnFixedSize2, "table-auto-column-fixed-size2.docx") +{ + uno::Reference xTablesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY); + uno::Reference xTextTable(xTables->getByIndex(0), uno::UNO_QUERY); + // This was 17907, i.e. the sum of the width of the 3 cells (10152 twips each), which is too wide. + CPPUNIT_ASSERT_EQUAL(sal_Int32(16891), getProperty(xTextTable, "Width")); +} + DECLARE_OOXMLIMPORT_TEST(testFdo46361, "fdo46361.docx") { uno::Reference xGroupShape(getShape(1), uno::UNO_QUERY); diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx b/writerfilter/source/dmapper/DomainMapperTableManager.cxx index cad79e9f350b..0caba6530041 100644 --- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx @@ -202,16 +202,7 @@ bool DomainMapperTableManager::sprm(Sprm & rSprm) } // Check whether the total width of given row is compared with the maximum value of rows (m_nMaxFixedWidth). - if (bFixed ) - { - // Check if total width - if (m_nMaxFixedWidth < nRowFixedWidth) - m_nMaxFixedWidth = nRowFixedWidth; - - pPropMap->setValue( TablePropertyMap::TABLE_WIDTH_TYPE, text::SizeType::FIX ); - pPropMap->setValue( TablePropertyMap::TABLE_WIDTH, m_nMaxFixedWidth ); - } - else + if (!bFixed) { // Set the width type of table with 'Auto' and set the width value to 100(%) pPropMap->setValue( TablePropertyMap::TABLE_WIDTH_TYPE, text::SizeType::VARIABLE );