writerfilter/source/dmapper/DomainMapper.cxx |   24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

New commits:
commit 62a6b49aa78b0d55342e79aad2ebb60d46349b3b
Author: Luboš Luňák <l.lu...@suse.cz>
Date:   Wed Jul 11 12:15:40 2012 +0200

    do not let a style override paragraph's numbering
    
    If a paragraph has its own <w:numPr>, do not let <w:pStyle> override that.
    
    Change-Id: I7cea0d1c8bf59804f8c56382ee68c7fad5ed3ef6
    (cherry picked from commit e7ab4bb6b0e83f01148ffff41e8c5eaa0c5ba0a4)
    
    Signed-off-by: Caolán McNamara <caol...@redhat.com>

diff --git a/writerfilter/source/dmapper/DomainMapper.cxx 
b/writerfilter/source/dmapper/DomainMapper.cxx
index ac52d07..8634644 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -1533,6 +1533,8 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, 
PropertyMapPtr rContext, SprmType
                 {
                     uno::Any aRules = uno::makeAny( pList->GetNumberingRules( 
) );
                     rContext->Insert( PROP_NUMBERING_RULES, true, aRules );
+                    // erase numbering from pStyle if already set
+                    rContext->erase( PropertyDefinition( 
PROP_NUMBERING_STYLE_NAME, true ));
                 }
             }
             else if ( !m_pImpl->IsStyleSheetImport( ) )
@@ -2990,17 +2992,21 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, 
PropertyMapPtr rContext, SprmType
         const ::rtl::OUString sConvertedStyleName = 
pStyleTable->ConvertStyleName( sStringValue, true );
         if (m_pImpl->GetTopContext() && m_pImpl->GetTopContextType() != 
CONTEXT_SECTION)
             m_pImpl->GetTopContext()->Insert( PROP_PARA_STYLE_NAME, true, 
uno::makeAny( sConvertedStyleName ));
-        const StyleSheetEntryPtr pEntry = 
pStyleTable->FindStyleSheetByISTD(sStringValue);
-        //apply numbering to paragraph if it was set at the style
-        OSL_ENSURE( pEntry.get(), "no style sheet found" );
-        const StyleSheetPropertyMap* pStyleSheetProperties = 
dynamic_cast<const StyleSheetPropertyMap*>(pEntry ? pEntry->pProperties.get() : 
0);
+        //apply numbering to paragraph if it was set at the style, but only if 
the paragraph itself
+        //does not specify the numbering
+        if( rContext->find( PropertyDefinition( PROP_NUMBERING_RULES, true )) 
== rContext->end()) // !contains
+        {
+            const StyleSheetEntryPtr pEntry = 
pStyleTable->FindStyleSheetByISTD(sStringValue);
+            OSL_ENSURE( pEntry.get(), "no style sheet found" );
+            const StyleSheetPropertyMap* pStyleSheetProperties = 
dynamic_cast<const StyleSheetPropertyMap*>(pEntry ? pEntry->pProperties.get() : 
0);
 
-        if( pStyleSheetProperties && pStyleSheetProperties->GetListId() >= 0 )
-            rContext->Insert( PROP_NUMBERING_STYLE_NAME, true, uno::makeAny(
-                        ListDef::GetStyleName( 
pStyleSheetProperties->GetListId( ) ) ), false);
+            if( pStyleSheetProperties && pStyleSheetProperties->GetListId() >= 
0 )
+                rContext->Insert( PROP_NUMBERING_STYLE_NAME, true, 
uno::makeAny(
+                            ListDef::GetStyleName( 
pStyleSheetProperties->GetListId( ) ) ), false);
 
-        if( pStyleSheetProperties && pStyleSheetProperties->GetListLevel() >= 
0 )
-            rContext->Insert( PROP_NUMBERING_LEVEL, true, 
uno::makeAny(pStyleSheetProperties->GetListLevel()), false);
+            if( pStyleSheetProperties && pStyleSheetProperties->GetListLevel() 
>= 0 )
+                rContext->Insert( PROP_NUMBERING_LEVEL, true, 
uno::makeAny(pStyleSheetProperties->GetListLevel()), false);
+        }
     }
     break;
     case NS_ooxml::LN_EG_RPrBase_rStyle:
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to