From 0d2da0acfaa610c690bce552c0ed5df62d4c35cb Mon Sep 17 00:00:00 2001 From: Samuel Mehrbrodt Date: Tue, 5 Mar 2019 13:47:10 +0100 Subject: [PATCH] tdf#123829 Respect CollapseEmptyCellPara setting when reading odf docs Commit 56b2cf0c10d9caa01ebae1d80465e342d046a85c introduced a "feature" which would hide an empty line after a table and only make it visible when the cursor is in it. So when loading an ODF doc, only enable this feature for which have the CollapseEmptyCellPara setting set. Change-Id: Ib4dfbbe8d45eb57547c51c7eee2f81331fc5300e Reviewed-on: https://gerrit.libreoffice.org/68742 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt --- sw/qa/extras/odfimport/data/tdf123829.odt | Bin 0 -> 10676 bytes sw/qa/extras/odfimport/odfimport.cxx | 11 +++++++++++ sw/source/filter/xml/xmlimp.cxx | 6 ++++++ 3 files changed, 17 insertions(+) create mode 100644 sw/qa/extras/odfimport/data/tdf123829.odt diff --git a/sw/qa/extras/odfimport/data/tdf123829.odt b/sw/qa/extras/odfimport/data/tdf123829.odt new file mode 100644 index 0000000000000000000000000000000000000000..3219b4156182c61f91da8ea94916946ff6d5562d GIT binary patch literal 10676 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 Ju;>85{{yg0O)>xg literal 0 HcmV?d00001 diff --git a/sw/qa/extras/odfimport/odfimport.cxx b/sw/qa/extras/odfimport/odfimport.cxx index 84133227b642..a911635d3a6d 100644 --- a/sw/qa/extras/odfimport/odfimport.cxx +++ b/sw/qa/extras/odfimport/odfimport.cxx @@ -23,6 +23,7 @@ #include #include +#include #include #include #include @@ -916,5 +917,15 @@ DECLARE_ODFIMPORT_TEST(testTdf120677, "tdf120677.fodt") // The document used to hang the layout, consuming memory until OOM } +DECLARE_ODFIMPORT_TEST(testTdf123829, "tdf123829.odt") +{ + SwXTextDocument* pTextDoc = dynamic_cast(mxComponent.get()); + CPPUNIT_ASSERT(pTextDoc); + SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "Compatibility: collapse cell paras should not be set", false, + pDoc->getIDocumentSettingAccess().get(DocumentSettingId::COLLAPSE_EMPTY_CELL_PARA)); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/filter/xml/xmlimp.cxx b/sw/source/filter/xml/xmlimp.cxx index abc22321a47d..80a5a9aeeeba 100644 --- a/sw/source/filter/xml/xmlimp.cxx +++ b/sw/source/filter/xml/xmlimp.cxx @@ -1392,6 +1392,7 @@ void SwXMLImport::SetConfigurationSettings(const Sequence < PropertyValue > & aC bool bPropLineSpacingShrinksFirstLine = false; bool bSubtractFlysAnchoredAtFlys = false; bool bDisableOffPagePositioning = false; + bool bCollapseEmptyCellPara = false; const PropertyValue* currentDatabaseDataSource = nullptr; const PropertyValue* currentDatabaseCommand = nullptr; @@ -1489,6 +1490,8 @@ void SwXMLImport::SetConfigurationSettings(const Sequence < PropertyValue > & aC bSubtractFlysAnchoredAtFlys = true; else if (pValues->Name == "DisableOffPagePositioning") bDisableOffPagePositioning = true; + else if (pValues->Name == "CollapseEmptyCellPara") + bCollapseEmptyCellPara = true; } catch( Exception& ) { @@ -1660,6 +1663,9 @@ void SwXMLImport::SetConfigurationSettings(const Sequence < PropertyValue > & aC if ( bDisableOffPagePositioning ) xProps->setPropertyValue("DisableOffPagePositioning", makeAny(true)); + if (!bCollapseEmptyCellPara) + xProps->setPropertyValue("CollapseEmptyCellPara", makeAny(false)); + SwDoc *pDoc = getDoc(); SfxPrinter *pPrinter = pDoc->getIDocumentDeviceAccess().getPrinter( false ); if( pPrinter )