sw/qa/extras/rtfexport/data/tdf104079.rtf | 48 ++++++++++++++++++++++ sw/qa/extras/rtfexport/rtfexport.cxx | 16 +++++++ writerfilter/source/dmapper/DomainMapper_Impl.cxx | 3 - 3 files changed, 66 insertions(+), 1 deletion(-)
New commits: commit 6ee33d0772f991f04e97b5b61d7b11810a1b8ac0 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Tue Oct 17 09:04:33 2017 +0200 tdf#104079 RTF import: fix handling fields inside TOC fields The marker trick is not needed for these, but the paragraph margins are lost when using it, so avoid it. Change-Id: I3fc9644cb85138b5473cb1478196ae8538041fb1 Reviewed-on: https://gerrit.libreoffice.org/43446 Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> Tested-by: Jenkins <c...@libreoffice.org> diff --git a/sw/qa/extras/rtfexport/data/tdf104079.rtf b/sw/qa/extras/rtfexport/data/tdf104079.rtf new file mode 100644 index 000000000000..f173ce2ddf91 --- /dev/null +++ b/sw/qa/extras/rtfexport/data/tdf104079.rtf @@ -0,0 +1,48 @@ +{\rtf1\mac\ansicpg10000\uc1 \deff0\deflang1033\deflangfe1033 +{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; +\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;} +{\stylesheet +{\sa120\nowidctlpar\adjustright \cgrid \snext0 Normal;} +{\s24\sa120\nowidctlpar\tqr\tx9360\adjustright \b\caps\cgrid \sbasedon0 \snext0 \sautoupd toc 1;} +} +\margl1440\margr1440\margt1296\margb1296 \widowctrl\ftnbj\aenddoc\hyphcaps0\viewkind1\viewscale100 \fet0\sectd \linex0\sectdefaultcl +\pard\plain \s24\sa120\nowidctlpar\tqr\tx9360\adjustright \b\caps\cgrid +{\field\fldedit +{\*\fldinst TOC \\o "1-3" } +{\fldrslt +{\lang1024 toc1\tab } +{\field\flddirty +{\*\fldinst GOTOBUTTON _Toc434317063 +{\field +{\*\fldinst PAGEREF _Toc434317063 } +{\fldrslt 3 } +} +} +} +{\lang1024 +\par } +\pard\plain \s24\sa120\nowidctlpar\tqr\tx9360\adjustright \b\caps\cgrid +{\lang1024 toc2\tab } +{\field\flddirty +{\*\fldinst GOTOBUTTON _Toc434317068 +{\field +{\*\fldinst PAGEREF _Toc434317068 } +{\fldrslt 8 } +} +} +} +{\lang1024 +\par toc3\tab } +{\field\flddirty +{\*\fldinst GOTOBUTTON _Toc434317069 +{\field +{\*\fldinst PAGEREF _Toc434317069 } +{\fldrslt 8 } +} +} +} +\par +\pard\plain \s24\sa120\nowidctlpar\tqr\tx9360\adjustright \b\caps\cgrid } +} +\prad\par +} diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx index ff05e4e7cfea..5664cc8872f6 100644 --- a/sw/qa/extras/rtfexport/rtfexport.cxx +++ b/sw/qa/extras/rtfexport/rtfexport.cxx @@ -1001,6 +1001,22 @@ DECLARE_RTFEXPORT_TEST(testTdf94377, "tdf94377.rtf") CPPUNIT_ASSERT_EQUAL(12.f, getProperty<float>(getRun(getParagraphOfText(2, xText, "asdf12"), 1), "CharHeight")); } +DECLARE_RTFEXPORT_TEST(testTdf104079, "tdf104079.rtf") +{ + bool bFound = false; + int nIndex = 0; + while (!bFound) + { + uno::Reference<text::XTextRange> xParagraph = getParagraph(++nIndex); + if (!xParagraph->getString().startsWith("toc3")) + continue; + + bFound = true; + // This was 0, 3rd paragraph of ToC lost its bottom paragraph margin. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(212), getProperty<sal_Int32>(xParagraph, "ParaBottomMargin")); + } +} + DECLARE_RTFEXPORT_TEST(testPageBackground, "page-background.rtf") { // The problem was that \background was ignored. diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 3ae08a1f56cf..545a003bb3e3 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -1182,10 +1182,11 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap ) else { uno::Reference<text::XTextCursor> xCursor; - if (m_bParaHadField && !m_bIsInComments) + if (m_bParaHadField && !m_bIsInComments && !xTOCMarkerCursor.is()) { // Workaround to make sure char props of the field are not lost. // Not relevant for editeng-based comments. + // Nor revelent for fields inside a TOC field. OUString const sMarker("X"); xCursor = xTextAppend->getText()->createTextCursor(); if (xCursor.is()) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits