summaryrefslogtreecommitdiff
path: root/writerfilter/source/dmapper
diff options
context:
space:
mode:
Diffstat (limited to 'writerfilter/source/dmapper')
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx34
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.hxx1
2 files changed, 24 insertions, 11 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 4e9a6f1cfec1..47f3a41b0b9d 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -155,6 +155,7 @@ DomainMapper_Impl::DomainMapper_Impl(
m_bIsColumnBreakDeferred( false ),
m_bIsPageBreakDeferred( false ),
m_bStartTOC(false),
+ m_bStartTOCHeaderFooter(false),
m_bStartedTOC(false),
m_bTOCPageRef(false),
m_nSymboldata(-1),
@@ -1316,22 +1317,29 @@ void DomainMapper_Impl::appendTextPortion( const OUString& rString, PropertyMapP
{
if (m_bStartTOC)
{
- m_bStartedTOC = true;
- uno::Reference< text::XTextCursor > xTOCTextCursor;
- xTOCTextCursor = xTextAppend->getEnd()->getText( )->createTextCursor( );
- xTOCTextCursor->gotoEnd(false);
- if (xTOCTextCursor.is())
+ if(m_bInHeaderFooterImport && !m_bStartTOCHeaderFooter)
{
- xTextRange = xTextAppend->insertTextPortion(rString, pValues, xTOCTextCursor);
- xTOCTextCursor->gotoRange(xTextRange->getEnd(), true);
+ xTextRange = xTextAppend->appendTextPortion(rString, pValues);
}
else
{
- xTextRange = xTextAppend->appendTextPortion(rString, pValues);
- xTOCTextCursor = xTextAppend->createTextCursor();
- xTOCTextCursor->gotoRange(xTextRange->getEnd(), false);
+ m_bStartedTOC = true;
+ uno::Reference< text::XTextCursor > xTOCTextCursor;
+ xTOCTextCursor = xTextAppend->getEnd()->getText( )->createTextCursor( );
+ xTOCTextCursor->gotoEnd(false);
+ if (xTOCTextCursor.is())
+ {
+ xTextRange = xTextAppend->insertTextPortion(rString, pValues, xTOCTextCursor);
+ xTOCTextCursor->gotoRange(xTextRange->getEnd(), true);
+ }
+ else
+ {
+ xTextRange = xTextAppend->appendTextPortion(rString, pValues);
+ xTOCTextCursor = xTextAppend->createTextCursor();
+ xTOCTextCursor->gotoRange(xTextRange->getEnd(), false);
+ }
+ m_aTextAppendStack.push(TextAppendContext(xTextAppend, xTOCTextCursor));
}
- m_aTextAppendStack.push(TextAppendContext(xTextAppend, xTOCTextCursor));
}
else
xTextRange = xTextAppend->appendTextPortion(rString, pValues);
@@ -2885,6 +2893,8 @@ void DomainMapper_Impl::handleToc
{
OUString sValue;
m_bStartTOC = true;
+ if(m_bInHeaderFooterImport)
+ m_bStartTOCHeaderFooter = true;
bool bTableOfFigures = false;
bool bHyperlinks = false;
bool bFromOutline = false;
@@ -3839,6 +3849,8 @@ void DomainMapper_Impl::PopFieldContext()
xTOCMarkerCursor->goLeft(1,sal_True);
xTOCMarkerCursor->setString(OUString());
}
+ if(m_bInHeaderFooterImport && m_bStartTOCHeaderFooter)
+ m_bStartTOCHeaderFooter = false;
}
else
{
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index cc4232d764a3..ca61079eca80 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -332,6 +332,7 @@ private:
bool m_bIsColumnBreakDeferred;
bool m_bIsPageBreakDeferred;
bool m_bStartTOC;
+ bool m_bStartTOCHeaderFooter;
/// If we got any text that is the pre-rendered result of the TOC field.
bool m_bStartedTOC;
bool m_bTOCPageRef;