summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <michael.stahl@allotropia.de>2023-11-16 13:31:10 +0100
committerMichael Stahl <michael.stahl@allotropia.de>2023-11-16 15:35:07 +0100
commit7b3f68257b7b6781dd22830bc118cb0ef92fb113 (patch)
treeee4ffb750bf0aa3b646e0e67e3e1ca0b993e10ad
parent5d4ecaa33cb5700893f0df9ae2335f65349706b1 (diff)
writerfilter: DomainMapper: fix undetected merge conflict
... between commit fce18155052821756466ea043c638f4ed72f41d6 and commit 15b886f460919ea3dce425a621dc017c2992a96b - move the code from lcl_text() to lcl_utext(). Change-Id: Iaa515d2ebd9861e24b442b0d7b41f83662ed58df Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159501 Tested-by: Michael Stahl <michael.stahl@allotropia.de> Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx129
-rw-r--r--writerfilter/source/dmapper/DomainMapper.hxx1
2 files changed, 71 insertions, 59 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 52836e497d50..dc863f3f5e8b 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -3925,65 +3925,6 @@ void DomainMapper::lcl_text(const sal_uInt8 * data_, size_t len)
pContext->Insert(PROP_BREAK_TYPE, uno::Any(style::BreakType_COLUMN_BEFORE));
m_pImpl->clearDeferredBreak(COLUMN_BREAK);
}
- if (IsRTFImport() && pContext) {
- //reset paragraph style properties not repeated at the paragraph
- std::optional<PropertyMap::Property> paraStyleName = pContext->getProperty(PROP_PARA_STYLE_NAME);
- if (paraStyleName.has_value()) {
- OUString uStyleName;
- paraStyleName->second >>= uStyleName;
- StyleSheetEntryPtr pStyleSheet = m_pImpl->GetStyleSheetTable()->FindStyleSheetByConvertedStyleName(uStyleName);
- if (pStyleSheet != nullptr)
- {
- std::vector< PropertyIds > stylePropertyIds = pStyleSheet->m_pProperties->GetPropertyIds();
- std::vector< PropertyIds >::iterator stylePropertyIdsIt = stylePropertyIds.begin();
- while (stylePropertyIdsIt != stylePropertyIds.end())
- {
- PropertyIds ePropertyId = *stylePropertyIdsIt;
- std::optional< PropertyMap::Property > styleProperty = pStyleSheet->m_pProperties->getProperty(ePropertyId);
- std::optional< PropertyMap::Property > paragraphProperty = pContext->getProperty(ePropertyId);
- if (paragraphProperty.has_value()) {
- if (paragraphProperty->second == styleProperty->second &&
- !isSPRMDeduplicateDenylist(ePropertyId, pContext))
- {
- pContext->Erase(ePropertyId);
- }
- }
- else
- {
- switch (ePropertyId)
- {
- case PROP_PARA_LEFT_MARGIN:
- if (!pContext->getProperty(PROP_NUMBERING_RULES))
- {
- pContext->Insert(ePropertyId, uno::Any(0l));
- }
- break;
- case PROP_PARA_RIGHT_MARGIN:
- pContext->Insert(ePropertyId, uno::Any(0l));
- break;
- case PROP_PARA_LAST_LINE_ADJUST:
- case PROP_PARA_ADJUST:
- pContext->Insert(ePropertyId, uno::Any(style::ParagraphAdjust_LEFT));
- break;
- case PROP_PARA_TAB_STOPS:
- pContext->Insert(ePropertyId, uno::Any(uno::Sequence< style::TabStop >()));
- break;
- case PROP_FILL_STYLE:
- pContext->Insert(ePropertyId, uno::Any(drawing::FillStyle_NONE));
- break;
- case PROP_FILL_COLOR:
- pContext->Insert(ePropertyId, uno::Any(sal_Int32(COL_TRANSPARENT)));
- break;
- case INVALID:
- default:
- break;
- }
- }
- ++stylePropertyIdsIt;
- }
- }
- }
- }
finishParagraph();
return;
}
@@ -4103,6 +4044,71 @@ void DomainMapper::lcl_checkId(const sal_Int32 nId)
}
}
+void DomainMapper::ResetStyleProperties()
+{
+ PropertyMapPtr pContext = m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH);
+ if (IsRTFImport() && pContext)
+ {
+ //reset paragraph style properties not repeated at the paragraph
+ std::optional<PropertyMap::Property> paraStyleName = pContext->getProperty(PROP_PARA_STYLE_NAME);
+ if (paraStyleName.has_value()) {
+ OUString uStyleName;
+ paraStyleName->second >>= uStyleName;
+ StyleSheetEntryPtr pStyleSheet = m_pImpl->GetStyleSheetTable()->FindStyleSheetByConvertedStyleName(uStyleName);
+ if (pStyleSheet != nullptr)
+ {
+ std::vector< PropertyIds > stylePropertyIds = pStyleSheet->m_pProperties->GetPropertyIds();
+ std::vector< PropertyIds >::iterator stylePropertyIdsIt = stylePropertyIds.begin();
+ while (stylePropertyIdsIt != stylePropertyIds.end())
+ {
+ PropertyIds ePropertyId = *stylePropertyIdsIt;
+ std::optional< PropertyMap::Property > styleProperty = pStyleSheet->m_pProperties->getProperty(ePropertyId);
+ std::optional< PropertyMap::Property > paragraphProperty = pContext->getProperty(ePropertyId);
+ if (paragraphProperty.has_value()) {
+ if (paragraphProperty->second == styleProperty->second &&
+ !isSPRMDeduplicateDenylist(ePropertyId, pContext))
+ {
+ pContext->Erase(ePropertyId);
+ }
+ }
+ else
+ {
+ switch (ePropertyId)
+ {
+ case PROP_PARA_LEFT_MARGIN:
+ if (!pContext->getProperty(PROP_NUMBERING_RULES))
+ {
+ pContext->Insert(ePropertyId, uno::Any(0l));
+ }
+ break;
+ case PROP_PARA_RIGHT_MARGIN:
+ pContext->Insert(ePropertyId, uno::Any(0l));
+ break;
+ case PROP_PARA_LAST_LINE_ADJUST:
+ case PROP_PARA_ADJUST:
+ pContext->Insert(ePropertyId, uno::Any(style::ParagraphAdjust_LEFT));
+ break;
+ case PROP_PARA_TAB_STOPS:
+ pContext->Insert(ePropertyId, uno::Any(uno::Sequence< style::TabStop >()));
+ break;
+ case PROP_FILL_STYLE:
+ pContext->Insert(ePropertyId, uno::Any(drawing::FillStyle_NONE));
+ break;
+ case PROP_FILL_COLOR:
+ pContext->Insert(ePropertyId, uno::Any(sal_Int32(COL_TRANSPARENT)));
+ break;
+ case INVALID:
+ default:
+ break;
+ }
+ }
+ ++stylePropertyIdsIt;
+ }
+ }
+ }
+ }
+}
+
void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len)
{
// All these fixed values are defined as static const sal_Unicode codepoints in the fast parser,
@@ -4121,6 +4127,11 @@ void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len)
if (len == 1)
{
+ if (sText[0] == 0x0d)
+ {
+ ResetStyleProperties();
+ }
+
// preload all footnotes in separated footnotes
if (sText[0] == 0x5)
{
diff --git a/writerfilter/source/dmapper/DomainMapper.hxx b/writerfilter/source/dmapper/DomainMapper.hxx
index a452e2e6e9bc..4fcd55195c84 100644
--- a/writerfilter/source/dmapper/DomainMapper.hxx
+++ b/writerfilter/source/dmapper/DomainMapper.hxx
@@ -175,6 +175,7 @@ private:
// Table
virtual void lcl_entry(writerfilter::Reference<Properties>::Pointer_t ref) override;
+ void ResetStyleProperties();
void finishParagraph(const bool bRemove = false, const bool bNoNumbering = false);
static void handleUnderlineType(const Id nId, const ::tools::SvRef<PropertyMap>& rContext);