summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2013-02-05 20:46:19 +0100
committerMiklos Vajna <vmiklos@suse.cz>2013-02-06 09:45:47 +0100
commit6769538b2e3ff454c4462e64372c50ff9d70df3e (patch)
treea094934847b995db8de777d7b71252b762bd4bcb
parentac2ee597d39fb45cd4873d4ae345e4dbfa2404eb (diff)
RTF import: fix import of \line symbol
"Required line break" was eaten by the newly added code in text() to ignore \'0a. (regression from f593a2e4179b05ae1019372cde612cb242d1d27f) (cherry picked from commit c4696e7c0456df8d9466acbae3ea1fa9dcfa73f0) Conflicts: sw/qa/extras/rtfimport/rtfimport.cxx Change-Id: Id32687c40a17ddb99196635cedfc850182705799 Signed-off-by: Miklos Vajna <vmiklos@suse.cz>
-rw-r--r--sw/qa/extras/rtfimport/data/fdo58646line.rtf1
-rw-r--r--sw/qa/extras/rtfimport/rtfimport.cxx8
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx8
3 files changed, 15 insertions, 2 deletions
diff --git a/sw/qa/extras/rtfimport/data/fdo58646line.rtf b/sw/qa/extras/rtfimport/data/fdo58646line.rtf
new file mode 100644
index 000000000000..63cf71dc6399
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/fdo58646line.rtf
@@ -0,0 +1 @@
+{\rtf1 foo\line bar}
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx
index d2a5c3189d99..3e15f5572447 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -137,6 +137,7 @@ public:
void testFdo54612();
void testFdo58933();
void testFdo44053();
+ void testFdo58646line();
CPPUNIT_TEST_SUITE(Test);
#if !defined(MACOSX) && !defined(WNT)
@@ -224,6 +225,7 @@ void Test::run()
{"fdo54612.rtf", &Test::testFdo54612},
{"fdo58933.rtf", &Test::testFdo58933},
{"fdo44053.rtf", &Test::testFdo44053},
+ {"fdo58646line.rtf", &Test::testFdo58646line},
};
for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i)
{
@@ -1065,6 +1067,12 @@ void Test::testFdo44053()
getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(1), "TableColumnSeparators")[0].Position);
}
+void Test::testFdo58646line()
+{
+ // \line symbol was ignored
+ getParagraph(1, "foo\nbar");
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index cdea1b1ce119..a58e139a5c12 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -1604,12 +1604,16 @@ int RTFDocumentImpl::dispatchSymbol(RTFKeyword nKeyword)
checkUnicode();
setNeedSect();
RTFSkipDestination aSkip(*this);
- sal_uInt8 cCh = 0;
+ if (RTF_LINE == nKeyword)
+ { // very special handling since text() will eat lone '\n'
+ singleChar('\n');
+ return 0;
+ }
// Trivial symbols
+ sal_uInt8 cCh = 0;
switch (nKeyword)
{
- case RTF_LINE: cCh = '\n'; break;
case RTF_TAB: cCh = '\t'; break;
case RTF_BACKSLASH: cCh = '\\'; break;
case RTF_LBRACE: cCh = '{'; break;