From a32b8e78b2847c39c3d51aad7f4a76a79370119c Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Sun, 12 Apr 2015 15:01:23 +0200 Subject: tdf#75614 RTF import: fix missing text after footnote (cherry picked from commit cec5f2eab25578a9859134d697c200089c597faa) Conflicts: sw/qa/extras/rtfimport/rtfimport.cxx Change-Id: I5901094cb603c35a1cd8ac718fd434a9dd55729b Reviewed-on: https://gerrit.libreoffice.org/15270 Tested-by: David Tardon Reviewed-by: David Tardon --- sw/qa/extras/rtfimport/data/tdf75614.rtf | 18 ++++++++++++++++++ sw/qa/extras/rtfimport/rtfimport.cxx | 6 ++++++ writerfilter/source/rtftok/rtfdocumentimpl.cxx | 6 +++++- 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 sw/qa/extras/rtfimport/data/tdf75614.rtf diff --git a/sw/qa/extras/rtfimport/data/tdf75614.rtf b/sw/qa/extras/rtfimport/data/tdf75614.rtf new file mode 100644 index 000000000000..123380190daf --- /dev/null +++ b/sw/qa/extras/rtfimport/data/tdf75614.rtf @@ -0,0 +1,18 @@ +{\rtf1\ansi\ansicpg0\uc1\deff0\deflang0\deflangfe0\fet2 +{\*\ftnsep\pard\plain\chftnsep } +{\*\ftnsepc\pard\plain\chftnsepc} +\paperw8391\paperh11906\margl567\margr567\margt567\margb567\headery567\footery6\viewscale150\viewzk0 +{\fonttbl +{\f0\fnil Arial;} +{\f1\fnil\fcharset204 times new roman;} +{\f2\fnil\fcharset204 cambria;} +{\f3\fnil\fcharset238 cambria;} +{\f4\fnil\fcharset0 cambria;} +{\f5\fnil\fcharset204 courier new;} +{\f6\fnil\fcharset204 arial;} +} +{\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;} +\pard\plain Before\plain \super \chftn +{\footnote +\pard Footnote.} +\plain after.\par} diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx index 1d77187fd3e3..8dce8eea9836 100644 --- a/sw/qa/extras/rtfimport/rtfimport.cxx +++ b/sw/qa/extras/rtfimport/rtfimport.cxx @@ -2252,6 +2252,12 @@ DECLARE_RTFIMPORT_TEST(testTdf88811, "tdf88811.rtf") CPPUNIT_ASSERT_EQUAL(static_cast(4), xDrawPage->getCount()); } +DECLARE_RTFIMPORT_TEST(testFdo75614, "tdf75614.rtf") +{ + // Text after the footnote was missing, so this resulted in a css::container::NoSuchElementException. + CPPUNIT_ASSERT_EQUAL(OUString("after."), getRun(getParagraph(1), 3)->getString()); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index 265fa1d35d50..d5895986dd36 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -2337,8 +2337,12 @@ int RTFDocumentImpl::dispatchSymbol(RTFKeyword nKeyword) } break; case RTF_CHFTN: - // Nothing to do, dmapper assumes this is the default. + { + if (m_aStates.top().pCurrentBuffer == &m_aSuperBuffer) + // Stop buffering, there will be no custom mark for this footnote or endnote. + m_aStates.top().pCurrentBuffer = 0; break; + } case RTF_PAGE: { // Ignore page breaks inside tables. -- cgit v1.2.3