diff options
author | Miklos Vajna <vmiklos@suse.cz> | 2012-05-29 15:31:11 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2012-05-29 19:30:24 +0200 |
commit | 9486851baea59d16c449d79bd61a38f6e686cfe0 (patch) | |
tree | 65f2cdb186e03af9fd2ef10d5de1f53f91325aa2 /writerfilter | |
parent | 6e6d81e9cfc593d865e409ad22b2307f87a37859 (diff) |
n#760764 dmapper: don't ignore character properties of text fields
Change-Id: If1497d78b8c31a4b2e5677bb57f40a0343a819a9
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 11 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.hxx | 1 |
2 files changed, 11 insertions, 1 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index c73b1ccd5c48..01d4b4600012 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -196,6 +196,7 @@ DomainMapper_Impl::DomainMapper_Impl( m_bIsColumnBreakDeferred( false ), m_bIsPageBreakDeferred( false ), m_pLastSectionContext( ), + m_pLastCharacterContext(), m_nCurrentTabStopIndex( 0 ), m_sCurrentParaStyleId(), m_bInStyleSheetImport( false ), @@ -361,6 +362,8 @@ void DomainMapper_Impl::PopProperties(ContextType eId) { m_pLastSectionContext = m_aPropertyStacks[eId].top( ); } + else if (eId == CONTEXT_CHARACTER) + m_pLastCharacterContext = m_aPropertyStacks[eId].top(); m_aPropertyStacks[eId].pop(); m_aContextStack.pop(); @@ -3173,7 +3176,13 @@ void DomainMapper_Impl::PopFieldContext() if( xToInsert.is() ) { uno::Reference< text::XTextAppendAndConvert > xTextAppendAndConvert( xTextAppend, uno::UNO_QUERY_THROW ); - xTextAppendAndConvert->appendTextContent( xToInsert, uno::Sequence< beans::PropertyValue >() ); + uno::Sequence<beans::PropertyValue> aValues; + // Character properties of the field show up here the + // last (always empty) run. Inherit character + // properties from there. + if (m_pLastCharacterContext.get()) + aValues = m_pLastCharacterContext->GetPropertyValues(); + xTextAppendAndConvert->appendTextContent(xToInsert, aValues); } else { diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index 8fa3f4a240ae..1dc1ebc67e1c 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -326,6 +326,7 @@ private: PropertyMapPtr m_pTopContext; PropertyMapPtr m_pLastSectionContext; + PropertyMapPtr m_pLastCharacterContext; ::std::vector<DeletableTabStop> m_aCurrentTabStops; sal_uInt32 m_nCurrentTabStopIndex; |