[Libreoffice] [PATCH] Import of xrefs to numbered paragraphs from docx

Troy Rollo libreoffice at troy.rollo.name
Fri Jul 22 06:59:48 PDT 2011


This replaces the earlier version of this patch, which was wrong for the
NUMBER_FULL_CONTEXT cross-reference type.
---
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |   20 +++++++++++++++++++-
 1 files changed, 19 insertions(+), 1 deletions(-)

diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 9944c8c..b3e88ea 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -2680,6 +2680,21 @@ void DomainMapper_Impl::CloseFieldCommand()
                             //above-below
                             nFieldPart = text::ReferenceFieldPart::UP_DOWN;
                         }
+                        else if( lcl_FindInCommand( pContext->GetCommand(), 'r', sValue ))
+                        {
+                            //number
+                            nFieldPart = text::ReferenceFieldPart::NUMBER;
+                        }
+                        else if( lcl_FindInCommand( pContext->GetCommand(), 'n', sValue ))
+                        {
+                            //number-no-context
+                            nFieldPart = text::ReferenceFieldPart::NUMBER_NO_CONTEXT;
+                        }
+                        else if( lcl_FindInCommand( pContext->GetCommand(), 'w', sValue ))
+                        {
+                            //number-full-context
+                            nFieldPart = text::ReferenceFieldPart::NUMBER_FULL_CONTEXT;
+                        }
                         xFieldProperties->setPropertyValue(
                                 rPropNameSupplier.GetName( PROP_REFERENCE_FIELD_PART ), uno::makeAny( nFieldPart ));
                     }
@@ -2980,7 +2995,10 @@ void DomainMapper_Impl::AddBookmark( const ::rtl::OUString& rBookmarkName, const
             xCursor->gotoRange( xTextAppend->getEnd(), true );
             uno::Reference< container::XNamed > xBkmNamed( xBookmark, uno::UNO_QUERY_THROW );
             //todo: make sure the name is not used already!
-            xBkmNamed->setName( aBookmarkIter->second.m_sBookmarkName );
+            if ( aBookmarkIter->second.m_sBookmarkName.getLength() > 0 )
+                xBkmNamed->setName( aBookmarkIter->second.m_sBookmarkName );
+            else
+                xBkmNamed->setName( rBookmarkName );
             xTextAppend->insertTextContent( uno::Reference< text::XTextRange >( xCursor, uno::UNO_QUERY_THROW), xBookmark, !xCursor->isCollapsed() );
             m_aBookmarkMap.erase( aBookmarkIter );
         }
-- 
1.7.2.5



More information about the LibreOffice mailing list