summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2014-12-16 23:45:15 +0100
committerMichael Stahl <mstahl@redhat.com>2014-12-16 23:55:34 +0100
commit1dd1dfc152c7cbeb374fe4f38b08c6af9cef2c06 (patch)
tree6bef520f06cf57099f5386e323ecc656ae261b39 /writerfilter
parentf14e6e06b9e3c82c267649d63512a3538e5ee2f5 (diff)
(related fdo#84685): writerfilter: RTF import: support \tc TOC entry
Change-Id: Icda252e1f092707728d3a24df50fba7080e759bb
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/rtftok/rtfcontrolwords.hxx1
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx10
2 files changed, 10 insertions, 1 deletions
diff --git a/writerfilter/source/rtftok/rtfcontrolwords.hxx b/writerfilter/source/rtftok/rtfcontrolwords.hxx
index ac45593ac7ef..f2f8ad51a81c 100644
--- a/writerfilter/source/rtftok/rtfcontrolwords.hxx
+++ b/writerfilter/source/rtftok/rtfcontrolwords.hxx
@@ -150,6 +150,7 @@ enum RTFDestinationState
DESTINATION_SHAPEGROUP,
DESTINATION_FOOTNOTESEPARATOR,
DESTINATION_INDEXENTRY,
+ DESTINATION_TOCENTRY,
};
enum RTFKeyword
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 3d7922a43cc7..6df07cead004 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -1260,6 +1260,7 @@ void RTFDocumentImpl::text(OUString& rString)
case DESTINATION_MTYPE:
case DESTINATION_MGROW:
case DESTINATION_INDEXENTRY:
+ case DESTINATION_TOCENTRY:
m_aStates.top().pDestinationText->append(rString);
break;
default:
@@ -1733,6 +1734,10 @@ int RTFDocumentImpl::dispatchDestination(RTFKeyword nKeyword)
case RTF_XE:
m_aStates.top().nDestinationState = DESTINATION_INDEXENTRY;
break;
+ case RTF_TC:
+ case RTF_TCN:
+ m_aStates.top().nDestinationState = DESTINATION_TOCENTRY;
+ break;
case RTF_REVTBL:
m_aStates.top().nDestinationState = DESTINATION_REVISIONTABLE;
break;
@@ -5191,12 +5196,15 @@ int RTFDocumentImpl::popState()
}
break;
case DESTINATION_INDEXENTRY:
+ case DESTINATION_TOCENTRY:
{
if (&m_aStates.top().aDestinationText != m_aStates.top().pDestinationText)
break; // not for nested group
OUString str(m_aStates.top().pDestinationText->makeStringAndClear());
// dmapper expects this as a field, so let's fake something...
- str = "XE \"" + str.replaceAll("\"", "\\\"") + "\"";
+ OUString const field(
+ (DESTINATION_INDEXENTRY == aState.nDestinationState) ? "XE" : "TC");
+ str = field + " \"" + str.replaceAll("\"", "\\\"") + "\"";
singleChar(0x13);
Mapper().utext(reinterpret_cast<sal_uInt8 const*>(str.getStr()), str.getLength());
singleChar(0x14);