summaryrefslogtreecommitdiff
path: root/writerfilter/source/dmapper/DomainMapper_Impl.cxx
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2013-01-03 16:40:29 +0100
committerMiklos Vajna <vmiklos@suse.cz>2013-01-04 14:49:05 +0100
commite8b661dd0aed9b35104e910acbb814748a2c3af0 (patch)
tree636051c870556e7adbbdfd6947ddbd889d169978 /writerfilter/source/dmapper/DomainMapper_Impl.cxx
parent2f3749efd781c2095a5782eee1b070bc3dc0fcc0 (diff)
n#793262 fix DOCX import of last empty header/footer para char props
At the end of the header/footer import, the last empty paragraph was removed. In case the last but one paragraph was empty, but had character properties (e.g. a custom font size), the removal changed these, and used the character properties of the last paragraph instead. Simply dispose the last paragraph, this way character properties are always kept.
Diffstat (limited to 'writerfilter/source/dmapper/DomainMapper_Impl.cxx')
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx17
1 files changed, 15 insertions, 2 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 3b8e2d86e192..8716c0d54cc8 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -278,8 +278,21 @@ void DomainMapper_Impl::RemoveLastParagraph( )
}
else
xCursor.set(m_aTextAppendStack.top().xCursor, uno::UNO_QUERY);
- xCursor->goLeft( 1, true );
- xCursor->setString(OUString());
+ uno::Reference<container::XEnumerationAccess> xEnumerationAccess(xCursor, uno::UNO_QUERY);
+ // Keep the character properties of the last but one paragraph, even if
+ // it's empty. This works for headers/footers, and maybe in other cases
+ // as well, but surely not in textboxes.
+ if (m_bInHeaderFooterImport && xEnumerationAccess.is())
+ {
+ uno::Reference<container::XEnumeration> xEnumeration = xEnumerationAccess->createEnumeration();
+ uno::Reference<lang::XComponent> xParagraph(xEnumeration->nextElement(), uno::UNO_QUERY);
+ xParagraph->dispose();
+ }
+ else
+ {
+ xCursor->goLeft( 1, true );
+ xCursor->setString(OUString());
+ }
}
catch( const uno::Exception& )
{