writerfilter/source/dmapper/DomainMapper.cxx |  129 ++++++++++++++-------------
 writerfilter/source/dmapper/DomainMapper.hxx |    1 
 2 files changed, 71 insertions(+), 59 deletions(-)

New commits:
commit 7b3f68257b7b6781dd22830bc118cb0ef92fb113
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Thu Nov 16 13:31:10 2023 +0100
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Thu Nov 16 15:35:07 2023 +0100

    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.st...@allotropia.de>
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

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);

Reply via email to