summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2017-07-04 08:51:53 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2017-07-04 10:17:24 +0200
commitabc440a691efb872afac385ce5ed28cd5db56c8c (patch)
tree5d9bef2cf6f97cdcf8ba4874cac8d48c15c0dc15 /writerfilter
parent287e853b85c86243faafc4cefb21eb8dd2390f90 (diff)
tdf#105095 DOCX import: conditionally ignore leading tab in footnotes
Commit b38629ae210b204a6d24d6e9c5c62eaaf563d494 (cp#1000017 DOCX/RTF import: avoid fake tab char in footnotes, 2013-12-05) added code to strip leading tabs from footnote text to improve odt->docx->odt rountrip experience. Turns out that this is correct only in case the gap between the footnote number and the content is provided by a paragraph margin. In case there is no such margin, then the tab is wanted; so only conditionally ignore such leading tab characters. Change-Id: I9d419bf2fd3b4899208489210cbe9809a2ab0736 Reviewed-on: https://gerrit.libreoffice.org/39490 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Jenkins <ci@libreoffice.org>
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx18
1 files changed, 14 insertions, 4 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 40a99feb0864..f7200d3aeb62 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -1721,10 +1721,20 @@ void DomainMapper_Impl::PushFootOrEndnote( bool bIsFootnote )
// Redlines for the footnote anchor
CheckRedline( xFootnote->getAnchor( ) );
- // Word has a leading tab on footnotes, but we don't implement space
- // between the footnote number and text using a tab, so just ignore
- // that for now.
- m_bIgnoreNextTab = true;
+ // Word has a leading tab on footnotes, but we may implement space
+ // between the footnote number and text using a paragraph margin, not a
+ // tab (Writer default). So ignore that in case there is a margin set.
+ uno::Reference<style::XStyleFamiliesSupplier> xStylesSupplier( GetTextDocument(), uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xStyleFamilies = xStylesSupplier->getStyleFamilies();
+ uno::Reference<container::XNameContainer> xStyles;
+ xStyleFamilies->getByName("ParagraphStyles") >>= xStyles;
+ uno::Reference<beans::XPropertySet> xStyle(xStyles->getByName("Footnote"), uno::UNO_QUERY);
+ if (xStyle.is())
+ {
+ sal_Int32 nMargin = 0;
+ xStyle->getPropertyValue("ParaLeftMargin") >>= nMargin;
+ m_bIgnoreNextTab = nMargin > 0;
+ }
}
catch( const uno::Exception& e )
{