tdf#146489 writerfilter: ensure only character properties

This is another RTF regression found against LO 6.0's
commit fdfdea4d5af51a68f2d497cc5c3359d74c385fd5
   tdf#82173 writerfilter: apply char properties to footnote

The original commit in LO 6.0 intended that only character properties
were used. A follow-up commit for RTF tried to ensure that
these would be on the top of the stack.

However, in this case, it seems like somehow the table is
getting involved in putting the paragraph context
on the top. (Actually, there is no
GetTopContextOfType(CONTEXT_CHARACTER) at all.)

In any case, aFontProperties should only contain
character properties, so ensure that.

The unit test shows that there is still some kind
of import problem, because the footnote marker
should be a large, red character, but it is just
normal text. See tdf#108949.

Change-Id: I1ea7256891b198046f79f0d3a36e43d6c2ae3383
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127943
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
diff --git a/sw/qa/extras/rtfexport/data/tdf146489.rtf b/sw/qa/extras/rtfexport/data/tdf146489.rtf
new file mode 100644
index 0000000..d8e1981
--- /dev/null
+++ b/sw/qa/extras/rtfexport/data/tdf146489.rtf
@@ -0,0 +1,56 @@
{\rtf1\ansi\deff3\adeflang1025
{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset0 Liberation Serif{\*\falt Times New Roman};}{\f4\fswiss\fprq2\fcharset0 Liberation Sans{\*\falt Arial};}{\f5\fnil\fprq2\fcharset0 DejaVu Sans;}{\f6\fswiss\fprq0\fcharset0 FreeSans;}{\f7\fnil\fprq2\fcharset0 FreeSans;}}
{\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;\red201\green33\blue30;\red255\green233\blue148;}
{\stylesheet{\s0\snext0\rtlch\af7\afs24\alang1081 \ltrch\lang1033\langfe2052\hich\af3\loch\widctlpar\hyphpar0\aspalpha\ltrpar\cf0\f3\fs24\lang1033\kerning1\dbch\af5\langfe2052 Normal;}
{\*\cs15\snext15 Numbering Symbols;}
{\*\cs16\snext16\loch\super Footnote Anchor;}
{\*\cs17\snext17 Footnote Characters;}
{\*\cs18\snext18\loch\super Endnote Anchor;}
{\*\cs19\snext19 Endnote Characters;}
{\s20\sbasedon0\snext21\rtlch\af7\afs28 \ltrch\hich\af4\loch\sb240\sa120\keepn\f4\fs28\dbch\af5 Heading;}
{\s21\sbasedon0\snext21\loch\sl276\slmult1\sb0\sa140 Text Body;}
{\s22\sbasedon21\snext22\rtlch\af6 \ltrch\loch\sl276\slmult1\sb0\sa140 List;}
{\s23\sbasedon0\snext23\rtlch\af6\afs24\ai \ltrch\loch\sb120\sa120\noline\fs24\i Caption;}
{\s24\sbasedon0\snext24\rtlch\af6\alang255 \ltrch\lang255\langfe255\loch\noline\lang255\dbch\langfe255 Index;}
{\s25\sbasedon0\snext25\loch\nowidctlpar\noline Table Contents;}
{\s26\sbasedon0\snext26\rtlch\afs20 \ltrch\loch\li340\ri0\lin340\rin0\fi-340\noline\fs20 Footnote;}
}{\*\listtable{\list\listtemplateid1
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li720}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'01.;}{\levelnumbers\'01;}\fi-360\li1080}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\fi-360\li1440}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'03.;}{\levelnumbers\'01;}\fi-360\li1800}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'04.;}{\levelnumbers\'01;}\fi-360\li2160}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\fi-360\li2520}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'06.;}{\levelnumbers\'01;}\fi-360\li2880}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\fi-360\li3240}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'08.;}{\levelnumbers\'01;}\fi-360\li3600}\listid1}
{\list\listtemplateid2
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext \'00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext \'00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext \'00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext \'00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext \'00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext \'00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext \'00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext \'00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext \'00;}{\levelnumbers;}\fi0\li0}\listid2}
}{\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}}{\*\generator LibreOfficeDev/7.4.0.0.alpha0$Linux_X86_64 LibreOffice_project/9f5188173a4a37a9d41ee90a5555874f1f17136e}{\info{\creatim\yr2022\mo1\dy4\hr20\min1}{\revtim\yr2022\mo1\dy5\hr8\min9}{\printim\yr0\mo0\dy0\hr0\min0}}{\*\userprops}\deftab709
\hyphauto1\viewscale170
{\*\pgdsctbl
{\pgdsc0\pgdscuse451\lndscpsxn\pgwsxn8391\pghsxn5953\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Default Page Style;}}
\formshade\landscape\paperh5953\paperw8391\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\pgndec\sftnnar\saftnnrlc\sectunlocked1\lndscpsxn\pgwsxn8391\pghsxn5953\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
{\*\ftnsep\chftnsep}\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\cellx3061\cellx6123\pgndec\loch\ql\ltrpar\pard\plain \s25\loch\nowidctlpar\noline\loch\intbl{\listtext\pard\plain  1.\tab}\ilvl0\ls1 \li720\ri0\lin720\rin0\fi-360\ql\ltrpar{\loch
numbered}{{\super \rtlch\afs96\ab \ltrch\loch\cf17\fs96\b\loch \chftn{\*\footnote \chftn\pard\plain \s26\rtlch\afs20 \ltrch\loch\li340\ri0\lin340\rin0\fi-340\noline\fs20{\rtlch\afs28 \ltrch\loch\fs28\chcbpat18\loch
\tab Footnote }{\rtlch\afs28 \ltrch\loch\fs28\chcbpat18\loch
caller in body text is large, red color.}
}}
}{\rtlch\afs96\ab \ltrch\loch\cf17\fs96\b\loch
 }{\loch
para}
\par \pard\plain \s25\loch\nowidctlpar\noline\loch\intbl\ql\ltrpar\loch
\cell\pard\plain \s25\loch\nowidctlpar\noline\loch\intbl\ql\nowidctlpar\noline\ltrpar\loch
\cell\row\pard\trowd\trql\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\cellx3061\cellx6123\pard\plain \s25\loch\nowidctlpar\noline\loch\intbl\ql\nowidctlpar\noline\ltrpar\loch
\cell\pard\plain \s25\loch\nowidctlpar\noline\loch\intbl\ql\nowidctlpar\noline\ltrpar\loch
\cell\row\pard\pard\plain \s0\rtlch\af7\afs24\alang1081 \ltrch\lang1033\langfe2052\hich\af3\loch\widctlpar\hyphpar0\aspalpha\ltrpar\cf0\f3\fs24\lang1033\kerning1\dbch\af5\langfe2052\loch\ql\ltrpar{\loch
unnumbered}
\par }
\ No newline at end of file
diff --git a/sw/qa/extras/rtfexport/rtfexport4.cxx b/sw/qa/extras/rtfexport/rtfexport4.cxx
index 66dda7f..edee77a 100644
--- a/sw/qa/extras/rtfexport/rtfexport4.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport4.cxx
@@ -218,6 +218,12 @@ CPPUNIT_TEST_FIXTURE(Test, testTabStopFillChars)
    CPPUNIT_ASSERT_EQUAL(u' ', aTabstops[0].FillChar);
}

DECLARE_RTFEXPORT_TEST(testTdf146489, "tdf146489.rtf")
{
    uno::Reference<text::XTextRange> xPara = getParagraph(2, "unnumbered");
    CPPUNIT_ASSERT_EQUAL(OUString(), getProperty<OUString>(xPara, "ListLabelString"));
}

DECLARE_RTFEXPORT_TEST(testCjklist38, "cjklist38.rtf")
{
    sal_Int16 numFormat = getNumberingTypeOfParagraph(1);
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 0bf0834..2857d11 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -3016,7 +3016,9 @@ void DomainMapper_Impl::PushFootOrEndnote( bool bIsFootnote )
            uno::UNO_QUERY_THROW );
        uno::Reference< text::XFootnote > xFootnote( xFootnoteText, uno::UNO_QUERY_THROW );
        pTopContext->SetFootnote(xFootnote, sFootnoteCharStyleName);
        uno::Sequence< beans::PropertyValue > aFontProperties = pTopContext->GetPropertyValues();
        uno::Sequence< beans::PropertyValue > aFontProperties;
        if (GetTopContextOfType(CONTEXT_CHARACTER))
            aFontProperties = GetTopContextOfType(CONTEXT_CHARACTER)->GetPropertyValues();
        appendTextContent( uno::Reference< text::XTextContent >( xFootnoteText, uno::UNO_QUERY_THROW ), aFontProperties );
        m_aTextAppendStack.push(TextAppendContext(uno::Reference< text::XTextAppend >( xFootnoteText, uno::UNO_QUERY_THROW ),
                    xFootnoteText->createTextCursorByRange(xFootnoteText->getStart())));