diff options
author | Miklos Vajna <vmiklos@suse.cz> | 2013-07-10 12:12:55 +0200 |
---|---|---|
committer | Fridrich Strba <fridrich@documentfoundation.org> | 2013-07-10 14:02:54 +0000 |
commit | ddf26c41c8af7d8b50784ee01df6f8319f9c0bb5 (patch) | |
tree | 7e1efdb41ccf7b85384deba1b664b00d00b88051 /sw | |
parent | d9b36d3623ce5d88bfaca7a31426fa126a6ce4ac (diff) |
fdo#66682 RTF export: fix level text of SVX_NUM_ARABIC
Even if level text is not ASCII, we should just write the placeholder
values (0x00, 0x01, etc.) in a hex encoded form, without Unicode.
Regression from 07d01742c69f1c0335bc7e1b57abd8341ce255e7.
Also, fix the import side, so the previous bad output now looks bad in
Writer as well.
(cherry picked from commit 8422d1f5042de08e8b090a907889b41e133bda40)
Conflicts:
sw/qa/extras/rtfexport/rtfexport.cxx
writerfilter/source/rtftok/rtfdocumentimpl.cxx
Change-Id: I2f93892006c07eec243ec7dfcb23372d243a2db4
Reviewed-on: https://gerrit.libreoffice.org/4809
Reviewed-by: Fridrich Strba <fridrich@documentfoundation.org>
Tested-by: Fridrich Strba <fridrich@documentfoundation.org>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/qa/extras/rtfexport/data/fdo66682.rtf | 25 | ||||
-rw-r--r-- | sw/qa/extras/rtfexport/rtfexport.cxx | 21 | ||||
-rw-r--r-- | sw/source/filter/ww8/rtfattributeoutput.cxx | 2 |
3 files changed, 47 insertions, 1 deletions
diff --git a/sw/qa/extras/rtfexport/data/fdo66682.rtf b/sw/qa/extras/rtfexport/data/fdo66682.rtf new file mode 100644 index 000000000000..76128a2f722c --- /dev/null +++ b/sw/qa/extras/rtfexport/data/fdo66682.rtf @@ -0,0 +1,25 @@ +{\rtf1\ansi\deff4\adeflang1025 +{\*\listtable +{\list\listtemplateid1 +{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0 +{\leveltext \'03 \'00 ;} +{\levelnumbers\'02;} +\fi-360\li720} +\listid1} +} +{\listoverridetable +{\listoverride\listid1\listoverridecount0\ls1} +} +\pard\plain \s0\sb0\sa113\nowidctlpar +\ilvl0\ls1 \li720\ri0\lin720\rin0\fi-360 +{\rtlch \ltrch\loch +This should be 1} +\par \pard\plain \s0\sb0\sa113\nowidctlpar +\ilvl0\ls1 \li720\ri0\lin720\rin0\fi-360 +{\rtlch \ltrch\loch +and 2} +\par \pard\plain \s0\sb0\sa113\nowidctlpar +\ilvl0\ls1 \li720\ri0\lin720\rin0\fi-360\sb0\sa113 +{\rtlch \ltrch\loch +and 3} +\par } diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx index 0605b82cb18d..fafa4f1b2c63 100644 --- a/sw/qa/extras/rtfexport/rtfexport.cxx +++ b/sw/qa/extras/rtfexport/rtfexport.cxx @@ -64,6 +64,7 @@ public: void testHyperlink(); void testTextFrameBorders(); void testTextframeGradient(); + void testFdo66682(); CPPUNIT_TEST_SUITE(Test); #if !defined(MACOSX) && !defined(WNT) @@ -117,6 +118,7 @@ void Test::run() {"hyperlink.rtf", &Test::testHyperlink}, {"textframe-borders.rtf", &Test::testTextFrameBorders}, {"textframe-gradient.rtf", &Test::testTextframeGradient}, + {"fdo66682.rtf", &Test::testFdo66682}, }; // Don't test the first import of these, for some reason those tests fail const char* aBlacklist[] = { @@ -584,6 +586,25 @@ void Test::testTextframeGradient() CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style); } +void Test::testFdo66682() +{ + uno::Reference<beans::XPropertySet> xPropertySet(getStyles("NumberingStyles")->getByName("WWNum1"), uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xLevels(xPropertySet->getPropertyValue("NumberingRules"), uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aProps; + xLevels->getByIndex(0) >>= aProps; // 1st level + + OUString aSuffix; + for (int i = 0; i < aProps.getLength(); ++i) + { + const beans::PropertyValue& rProp = aProps[i]; + + if (rProp.Name == "Suffix") + aSuffix = rProp.Value.get<OUString>(); + } + // Suffix was '\0' instead of ' '. + CPPUNIT_ASSERT_EQUAL(OUString(" "), aSuffix); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx index d726cb57f3ba..589f8a9944cb 100644 --- a/sw/source/filter/ww8/rtfattributeoutput.cxx +++ b/sw/source/filter/ww8/rtfattributeoutput.cxx @@ -1397,7 +1397,7 @@ void RtfAttributeOutput::NumberingLevel( sal_uInt8 nLevel, else { m_rExport.Strm() << "\\'" << msfilter::rtfutil::OutHex( rNumberingString.Len(), 2 ).getStr(); - m_rExport.Strm() << msfilter::rtfutil::OutString( rNumberingString, m_rExport.eDefaultEncoding ).getStr(); + m_rExport.Strm() << msfilter::rtfutil::OutString( rNumberingString, m_rExport.eDefaultEncoding, /*bUnicode =*/ false ).getStr(); } m_rExport.Strm() << ";}"; |