diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2014-10-26 12:53:05 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2014-10-26 15:17:31 +0100 |
commit | 956c3ff3d43e1b181f7c91518edee1c7c4dc2a0a (patch) | |
tree | 7fe2c011b6f54fdc5e6bc3ec03cd1c906020d08b /writerfilter | |
parent | 89a04240222ff6909d37debcbf5dce614c4dd1c8 (diff) |
fdo#82076 RTF import: handle footnote in table cell
Change-Id: I69def7936c320e93db5d4504922d52346caaf9cf
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.cxx | 19 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.hxx | 3 |
2 files changed, 20 insertions, 2 deletions
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index 8dbf3b0d47f5..cfba3804793a 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -1488,6 +1488,14 @@ void RTFDocumentImpl::replayBuffer(RTFBuffer_t& rBuffer, m_pSdrImport->resolve(boost::get<1>(aTuple)->getShape(), false, RTFSdrImport::SHAPE); else if (boost::get<0>(aTuple) == BUFFER_ENDSHAPE) m_pSdrImport->close(); + else if (boost::get<0>(aTuple) == BUFFER_RESOLVESUBSTREAM) + { + RTFSprms& rAttributes = boost::get<1>(aTuple)->getAttributes(); + sal_Size nPos = rAttributes.find(0)->getInt(); + Id nId = rAttributes.find(1)->getInt(); + OUString aCustomMark = rAttributes.find(2)->getString(); + resolveSubstream(nPos, nId, aCustomMark); + } else assert(false); } @@ -1707,7 +1715,16 @@ int RTFDocumentImpl::dispatchDestination(RTFKeyword nKeyword) m_aStates.top().nDestinationState = DESTINATION_FOOTNOTE; if (bCustomMark) Mapper().startCharacterGroup(); - resolveSubstream(m_nGroupStartPos - 1, nId, aCustomMark); + if (!m_aStates.top().pCurrentBuffer) + resolveSubstream(m_nGroupStartPos - 1, nId, aCustomMark); + else + { + RTFSprms aAttributes; + aAttributes.set(Id(0), RTFValue::Pointer_t(new RTFValue(m_nGroupStartPos - 1))); + aAttributes.set(Id(1), RTFValue::Pointer_t(new RTFValue(nId))); + aAttributes.set(Id(2), RTFValue::Pointer_t(new RTFValue(aCustomMark))); + m_aStates.top().pCurrentBuffer->push_back(Buf_t(BUFFER_RESOLVESUBSTREAM, RTFValue::Pointer_t(new RTFValue(aAttributes)))); + } if (bCustomMark) { m_aStates.top().aCharacterAttributes.clear(); diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx index 2f342991f162..85af01fdb90d 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx @@ -56,7 +56,8 @@ enum RTFBufferTypes BUFFER_ENDRUN, BUFFER_PAR, BUFFER_STARTSHAPE, - BUFFER_ENDSHAPE + BUFFER_ENDSHAPE, + BUFFER_RESOLVESUBSTREAM }; /// Form field types |