sw/qa/extras/rtfexport/data/tdf146489.rtf         |   56 ++++++++++++++++++++++
 sw/qa/extras/rtfexport/rtfexport4.cxx             |    6 ++
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |    4 +
 3 files changed, 65 insertions(+), 1 deletion(-)

New commits:
commit 44c37c4af2d23d1469cdeeb56f2f5a2bef493986
Author:     Justin Luth <justin_l...@sil.org>
AuthorDate: Tue Jan 4 15:36:35 2022 +0200
Commit:     Justin Luth <jl...@mail.com>
CommitDate: Wed Jan 5 09:44:30 2022 +0100

    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 <jl...@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 000000000000..d8e198114052
--- /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 66dda7f8500c..edee77a348fd 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 0bf0834febde..2857d113a913 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())));

Reply via email to