diff options
Diffstat (limited to 'sw')
-rw-r--r-- | sw/inc/IDocumentSettingAccess.hxx | 1 | ||||
-rw-r--r-- | sw/qa/uibase/uno/uno.cxx | 26 | ||||
-rw-r--r-- | sw/source/core/doc/DocumentSettingManager.cxx | 11 | ||||
-rw-r--r-- | sw/source/core/inc/DocumentSettingManager.hxx | 1 | ||||
-rw-r--r-- | sw/source/filter/xml/xmlexp.cxx | 1 | ||||
-rw-r--r-- | sw/source/filter/xml/xmlimp.cxx | 10 | ||||
-rw-r--r-- | sw/source/uibase/uno/SwXDocumentSettings.cxx | 18 |
7 files changed, 68 insertions, 0 deletions
diff --git a/sw/inc/IDocumentSettingAccess.hxx b/sw/inc/IDocumentSettingAccess.hxx index f14ffb543b30..8e5e3a587997 100644 --- a/sw/inc/IDocumentSettingAccess.hxx +++ b/sw/inc/IDocumentSettingAccess.hxx @@ -93,6 +93,7 @@ enum class DocumentSettingId AUTO_FIRST_LINE_INDENT_DISREGARD_LINE_SPACE, HYPHENATE_URLS, ///< tdf#152952 DO_NOT_BREAK_WRAPPED_TABLES, + ALLOW_TEXT_AFTER_FLOATING_TABLE_BREAK, // COMPATIBILITY FLAGS END BROWSE_MODE, HTML_MODE, diff --git a/sw/qa/uibase/uno/uno.cxx b/sw/qa/uibase/uno/uno.cxx index dd74cd716ea3..3d7a473d7660 100644 --- a/sw/qa/uibase/uno/uno.cxx +++ b/sw/qa/uibase/uno/uno.cxx @@ -534,6 +534,32 @@ CPPUNIT_TEST_FIXTURE(SwUibaseUnoTest, testDoNotBreakWrappedTables) CPPUNIT_ASSERT(bDoNotBreakWrappedTables); } +CPPUNIT_TEST_FIXTURE(SwUibaseUnoTest, testAllowTextAfterFloatingTableBreak) +{ + // Given an empty document: + createSwDoc(); + + // When checking the state of the AllowTextAfterFloatingTableBreak compat flag: + uno::Reference<lang::XMultiServiceFactory> xDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xSettings( + xDocument->createInstance("com.sun.star.document.Settings"), uno::UNO_QUERY); + bool bAllowTextAfterFloatingTableBreak{}; + // Without the accompanying fix in place, this test would have failed with: + // An uncaught exception of type com.sun.star.beans.UnknownPropertyException + // i.e. the compat flag was not recognized. + xSettings->getPropertyValue("AllowTextAfterFloatingTableBreak") + >>= bAllowTextAfterFloatingTableBreak; + // Then make sure it's false by default: + CPPUNIT_ASSERT(!bAllowTextAfterFloatingTableBreak); + + // And when setting AllowTextAfterFloatingTableBreak=true: + xSettings->setPropertyValue("AllowTextAfterFloatingTableBreak", uno::Any(true)); + // Then make sure it gets enabled: + xSettings->getPropertyValue("AllowTextAfterFloatingTableBreak") + >>= bAllowTextAfterFloatingTableBreak; + CPPUNIT_ASSERT(bAllowTextAfterFloatingTableBreak); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/doc/DocumentSettingManager.cxx b/sw/source/core/doc/DocumentSettingManager.cxx index 5610f2a1f801..53bd26fa9d08 100644 --- a/sw/source/core/doc/DocumentSettingManager.cxx +++ b/sw/source/core/doc/DocumentSettingManager.cxx @@ -253,6 +253,8 @@ bool sw::DocumentSettingManager::get(/*[in]*/ DocumentSettingId id) const case DocumentSettingId::HYPHENATE_URLS: return mbHyphenateURLs; case DocumentSettingId::DO_NOT_BREAK_WRAPPED_TABLES: return mbDoNotBreakWrappedTables; + case DocumentSettingId::ALLOW_TEXT_AFTER_FLOATING_TABLE_BREAK: + return mbAllowTextAfterFloatingTableBreak; case DocumentSettingId::NO_NUMBERING_SHOW_FOLLOWBY: return mbNoNumberingShowFollowBy; case DocumentSettingId::DROP_CAP_PUNCTUATION: return mbDropCapPunctuation; case DocumentSettingId::USE_VARIABLE_WIDTH_NBSP: return mbUseVariableWidthNBSP; @@ -442,6 +444,10 @@ void sw::DocumentSettingManager::set(/*[in]*/ DocumentSettingId id, /*[in]*/ boo mbDoNotBreakWrappedTables = value; break; + case DocumentSettingId::ALLOW_TEXT_AFTER_FLOATING_TABLE_BREAK: + mbAllowTextAfterFloatingTableBreak = value; + break; + case DocumentSettingId::NO_NUMBERING_SHOW_FOLLOWBY: mbNoNumberingShowFollowBy = value; break; @@ -1066,6 +1072,11 @@ void sw::DocumentSettingManager::dumpAsXml(xmlTextWriterPtr pWriter) const BAD_CAST(OString::boolean(mbDoNotBreakWrappedTables).getStr())); (void)xmlTextWriterEndElement(pWriter); + (void)xmlTextWriterStartElement(pWriter, BAD_CAST("mbAllowTextAfterFloatingTableBreak")); + (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("value"), + BAD_CAST(OString::boolean(mbAllowTextAfterFloatingTableBreak).getStr())); + (void)xmlTextWriterEndElement(pWriter); + (void)xmlTextWriterStartElement(pWriter, BAD_CAST("mnImagePreferredDPI")); (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("value"), BAD_CAST(OString::number(mnImagePreferredDPI).getStr())); diff --git a/sw/source/core/inc/DocumentSettingManager.hxx b/sw/source/core/inc/DocumentSettingManager.hxx index 1a6fdf6f4bf6..d03706f70d9a 100644 --- a/sw/source/core/inc/DocumentSettingManager.hxx +++ b/sw/source/core/inc/DocumentSettingManager.hxx @@ -176,6 +176,7 @@ class DocumentSettingManager final : bool mbAutoFirstLineIndentDisregardLineSpace; bool mbHyphenateURLs = false; bool mbDoNotBreakWrappedTables = false; + bool mbAllowTextAfterFloatingTableBreak = false; // If this is on as_char flys wrapping will be handled the same like in Word bool mbNoNumberingShowFollowBy; bool mbDropCapPunctuation; // tdf#150200, tdf#150438 diff --git a/sw/source/filter/xml/xmlexp.cxx b/sw/source/filter/xml/xmlexp.cxx index d0148ac4ace3..ae131a26f792 100644 --- a/sw/source/filter/xml/xmlexp.cxx +++ b/sw/source/filter/xml/xmlexp.cxx @@ -396,6 +396,7 @@ void SwXMLExport::GetConfigurationSettings( Sequence < PropertyValue >& rProps) static const std::initializer_list<std::u16string_view> vOmitFalseValues = { u"DoNotBreakWrappedTables", + u"AllowTextAfterFloatingTableBreak", }; SvXMLUnitConverter::convertPropertySet( rProps, xProps, &vOmitFalseValues ); diff --git a/sw/source/filter/xml/xmlimp.cxx b/sw/source/filter/xml/xmlimp.cxx index 8e5362451052..3b37d1cf76a0 100644 --- a/sw/source/filter/xml/xmlimp.cxx +++ b/sw/source/filter/xml/xmlimp.cxx @@ -1303,6 +1303,7 @@ void SwXMLImport::SetConfigurationSettings(const Sequence < PropertyValue > & aC bool bAutoFirstLineIndentDisregardLineSpace = false; bool bHyphenateURLs = false; bool bDoNotBreakWrappedTables = false; + bool bAllowTextAfterFloatingTableBreak = false; bool bDropCapPunctuation = false; const PropertyValue* currentDatabaseDataSource = nullptr; @@ -1405,6 +1406,10 @@ void SwXMLImport::SetConfigurationSettings(const Sequence < PropertyValue > & aC { rValue.Value >>= bDoNotBreakWrappedTables; } + else if (rValue.Name == "AllowTextAfterFloatingTableBreak") + { + rValue.Value >>= bAllowTextAfterFloatingTableBreak; + } else if ( rValue.Name == "DropCapPunctuation" ) bDropCapPunctuation = true; } @@ -1579,6 +1584,11 @@ void SwXMLImport::SetConfigurationSettings(const Sequence < PropertyValue > & aC xProps->setPropertyValue("DoNotBreakWrappedTables", Any(true)); } + if (bAllowTextAfterFloatingTableBreak) + { + xProps->setPropertyValue("AllowTextAfterFloatingTableBreak", Any(true)); + } + // LO 7.4 and previous versions had different drop cap punctuation: very long dashes. // In order to keep backwards compatibility, DropCapPunctuation option is written to .odt // files, and the default for new documents is 'true'. Files without this option diff --git a/sw/source/uibase/uno/SwXDocumentSettings.cxx b/sw/source/uibase/uno/SwXDocumentSettings.cxx index d544848ca597..3071f0cf6ee4 100644 --- a/sw/source/uibase/uno/SwXDocumentSettings.cxx +++ b/sw/source/uibase/uno/SwXDocumentSettings.cxx @@ -154,6 +154,7 @@ enum SwDocumentSettingsPropertyHandles HANDLE_AUTO_FIRST_LINE_INDENT_DISREGARD_LINE_SPACE, HANDLE_HYPHENATE_URLS, HANDLE_DO_NOT_BREAK_WRAPPED_TABLES, + HANDLE_ALLOW_TEXT_AFTER_FLOATING_TABLE_BREAK, HANDLE_NO_NUMBERING_SHOW_FOLLOWBY, HANDLE_DROP_CAP_PUNCTUATION, HANDLE_USE_VARIABLE_WIDTH_NBSP, @@ -257,6 +258,7 @@ static rtl::Reference<MasterPropertySetInfo> lcl_createSettingsInfo() { OUString("AutoFirstLineIndentDisregardLineSpace"), HANDLE_AUTO_FIRST_LINE_INDENT_DISREGARD_LINE_SPACE, cppu::UnoType<bool>::get(), 0 }, { OUString("HyphenateURLs"), HANDLE_HYPHENATE_URLS, cppu::UnoType<bool>::get(), 0 }, { OUString("DoNotBreakWrappedTables"), HANDLE_DO_NOT_BREAK_WRAPPED_TABLES, cppu::UnoType<bool>::get(), 0 }, + { OUString("AllowTextAfterFloatingTableBreak"), HANDLE_ALLOW_TEXT_AFTER_FLOATING_TABLE_BREAK, cppu::UnoType<bool>::get(), 0 }, { OUString("NoNumberingShowFollowBy"), HANDLE_NO_NUMBERING_SHOW_FOLLOWBY, cppu::UnoType<bool>::get(), 0 }, { OUString("DropCapPunctuation"), HANDLE_DROP_CAP_PUNCTUATION, cppu::UnoType<bool>::get(), 0 }, { OUString("UseVariableWidthNBSP"), HANDLE_USE_VARIABLE_WIDTH_NBSP, cppu::UnoType<bool>::get(), 0 }, @@ -1080,6 +1082,16 @@ void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInf } } break; + case HANDLE_ALLOW_TEXT_AFTER_FLOATING_TABLE_BREAK: + { + bool bTmp; + if (rValue >>= bTmp) + { + mpDoc->getIDocumentSettingAccess().set( + DocumentSettingId::ALLOW_TEXT_AFTER_FLOATING_TABLE_BREAK, bTmp); + } + } + break; case HANDLE_NO_NUMBERING_SHOW_FOLLOWBY: { bool bTmp; @@ -1638,6 +1650,12 @@ void SwXDocumentSettings::_getSingleValue( const comphelper::PropertyInfo & rInf DocumentSettingId::DO_NOT_BREAK_WRAPPED_TABLES); } break; + case HANDLE_ALLOW_TEXT_AFTER_FLOATING_TABLE_BREAK: + { + rValue <<= mpDoc->getIDocumentSettingAccess().get( + DocumentSettingId::ALLOW_TEXT_AFTER_FLOATING_TABLE_BREAK); + } + break; case HANDLE_NO_NUMBERING_SHOW_FOLLOWBY: { rValue <<= mpDoc->getIDocumentSettingAccess().get( |