Kaydet (Commit) 756b2431 authored tarafından Justin Luth's avatar Justin Luth Kaydeden (comit) Miklos Vajna

tdf#108949 rtf writerfilter: apply char properties to footnote

commit fdfdea4d for tdf#82173
added that functionality for .docx, but since .rtf didn't support
character props for footnotes, it messed up other formatting.

start/EndCharacterGroup() fixes the reported bug.
runProps() adds the functionality for .rtf that was requested
for .docx in bug 82173.

Change-Id: Ia9a2332659247a0fe2c2a506f1967c148362928f
Reviewed-on: https://gerrit.libreoffice.org/40430Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
üst ea3ca5e1
{\rtf1\ansi
{\*\listtable{\list\listtemplateid-1{\listlevel{\leveltext\'02\'00.;}{\levelnumbers\'01;}}}}{\listname ;}\listid740254765
{\*\listoverridetable{\listoverride\listid726493088\ls1}}
{\colortbl;\red255\green0\blue0;\red0\green255\blue255;}
\landscape\paperh5953\paperw8391
\fet0
{\listtext\pard\plain 1.\tab}\ilvl0\ls1 Footnote
{\cf1 \chftn{\footnote{\chftn \tab This text should be normal, the in-text footnote character should be red.}}}
test\par
\pard\plain List paragraphs are not properly managed in LO - at least not around footnotes.
}
......@@ -11,6 +11,7 @@
#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
#include <com/sun/star/style/PageStyleLayout.hpp>
#include <com/sun/star/text/XFootnote.hpp>
#include <com/sun/star/text/XFootnotesSupplier.hpp>
#include <com/sun/star/text/XPageCursor.hpp>
#include <com/sun/star/text/XTextViewCursorSupplier.hpp>
......@@ -24,7 +25,7 @@ public:
DECLARE_RTFEXPORT_TEST(testTdf108949, "tdf108949_footnoteCharFormat.odt")
{
//CPPUNIT_ASSERT_EQUAL_MESSAGE("Paragraph Numbering style", OUString(), getProperty<OUString>(getParagraph(2), "NumberingStyleName"));
CPPUNIT_ASSERT_EQUAL_MESSAGE("Paragraph Numbering style", OUString(), getProperty<OUString>(getParagraph(2), "NumberingStyleName"));
uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, uno::UNO_QUERY);
uno::Reference<container::XIndexAccess> xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
......@@ -35,6 +36,19 @@ DECLARE_RTFEXPORT_TEST(testTdf108949, "tdf108949_footnoteCharFormat.odt")
//CPPUNIT_ASSERT_EQUAL(sal_Int32(0x000000), getProperty<sal_Int32>(getRun(getParagraphOfText(1, xFootnoteText),1), "CharColor"));
}
DECLARE_RTFIMPORT_TEST(testTdf108949_footnote, "tdf108949_footnote.rtf")
{
CPPUNIT_ASSERT_EQUAL_MESSAGE("Paragraph Numbering style", OUString(), getProperty<OUString>(getParagraph(2), "NumberingStyleName"));
uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, uno::UNO_QUERY);
uno::Reference<container::XIndexAccess> xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
uno::Reference<text::XFootnote> xFootnote;
xFootnotes->getByIndex(0) >>= xFootnote;
// The color of the footnote anchor was black (0x000000)
CPPUNIT_ASSERT_EQUAL_MESSAGE("Footnote Character color", sal_Int32(0xFF0000), getProperty< sal_Int32 >(xFootnote->getAnchor(), "CharColor") );
}
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -303,8 +303,8 @@ RTFError RTFDocumentImpl::dispatchDestination(RTFKeyword nKeyword)
}
}
m_aStates.top().eDestination = Destination::FOOTNOTE;
if (bCustomMark)
Mapper().startCharacterGroup();
Mapper().startCharacterGroup();
runProps();
if (!m_aStates.top().pCurrentBuffer)
resolveSubstream(m_nGroupStartPos - 1, nId, aCustomMark);
else
......@@ -322,8 +322,8 @@ RTFError RTFDocumentImpl::dispatchDestination(RTFKeyword nKeyword)
auto pValue = std::make_shared<RTFValue>(1);
m_aStates.top().aCharacterAttributes.set(NS_ooxml::LN_CT_FtnEdnRef_customMarkFollows, pValue);
text(aCustomMark);
Mapper().endCharacterGroup();
}
Mapper().endCharacterGroup();
m_aStates.top().eDestination = Destination::SKIP;
}
break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment