summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
Diffstat (limited to 'sw')
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx28
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.hxx10
2 files changed, 17 insertions, 21 deletions
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 42a132d638b6..d9f33762d60a 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -516,8 +516,6 @@ void DocxAttributeOutput::StartRun( const SwRedlineData* pRedlineData )
void DocxAttributeOutput::EndRun()
{
- if ( m_nCloseHyperlinkStatus == Detected )
- m_nCloseHyperlinkStatus = EndInThisRun;
// Write field starts
for ( std::vector<FieldInfos>::iterator pIt = m_Fields.begin(); pIt != m_Fields.end(); ++pIt )
{
@@ -543,6 +541,11 @@ void DocxAttributeOutput::EndRun()
// before "postponed run start")
m_pSerializer->mark(); // let's call it "actual run start"
+ if ( m_closeHyperlinkInPreviousRun )
+ {
+ m_pSerializer->endElementNS( XML_w, XML_hyperlink );
+ m_closeHyperlinkInPreviousRun = false;
+ }
// prepend the actual run start
if ( m_pHyperlinkAttrList )
{
@@ -551,11 +554,6 @@ void DocxAttributeOutput::EndRun()
m_pSerializer->startElementNS( XML_w, XML_hyperlink, xAttrList );
m_pHyperlinkAttrList = NULL;
}
- if ( m_nCloseHyperlinkStatus == EndInPrevRun)
- {
- m_pSerializer->endElementNS( XML_w, XML_hyperlink );
- m_nCloseHyperlinkStatus = Undetected;
- }
// Write the hyperlink and toc fields starts
for ( std::vector<FieldInfos>::iterator pIt = m_Fields.begin(); pIt != m_Fields.end(); )
@@ -592,10 +590,10 @@ void DocxAttributeOutput::EndRun()
EndField_Impl( m_Fields.front( ) );
m_Fields.erase( m_Fields.begin( ) );
}
- if ( m_nCloseHyperlinkStatus == EndInThisRun)
+ if ( m_closeHyperlinkInThisRun )
{
m_pSerializer->endElementNS( XML_w, XML_hyperlink );
- m_nCloseHyperlinkStatus = Undetected;
+ m_closeHyperlinkInThisRun = false;
}
// if there is some redlining in the document, output it
@@ -1043,8 +1041,11 @@ static void impl_WriteRunText( FSHelperPtr pSerializer, sal_Int32 nTextToken,
void DocxAttributeOutput::RunText( const String& rText, rtl_TextEncoding /*eCharSet*/ )
{
- if ( m_nCloseHyperlinkStatus == Detected )
- m_nCloseHyperlinkStatus = EndInPrevRun;
+ if( m_closeHyperlinkInThisRun )
+ {
+ m_closeHyperlinkInPreviousRun = true;
+ m_closeHyperlinkInThisRun = false;
+ }
OUString aText( rText );
// one text can be split into more <w:t>blah</w:t>'s by line breaks etc.
@@ -1232,7 +1233,7 @@ bool DocxAttributeOutput::StartURL( const String& rUrl, const String& rTarget )
bool DocxAttributeOutput::EndURL()
{
- m_nCloseHyperlinkStatus = Detected;
+ m_closeHyperlinkInThisRun = true;
return true;
}
@@ -4350,7 +4351,8 @@ DocxAttributeOutput::DocxAttributeOutput( DocxExport &rExport, FSHelperPtr pSeri
m_bParagraphOpened( false ),
m_nColBreakStatus( COLBRK_NONE ),
m_pParentFrame( NULL ),
- m_nCloseHyperlinkStatus( Undetected ),
+ m_closeHyperlinkInThisRun( false ),
+ m_closeHyperlinkInPreviousRun( false ),
m_postponedGraphic( NULL ),
m_postponedMath( NULL ),
m_postitFieldsMaxId( 0 )
diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx
index 10ee7cd96a94..79c8b026ae42 100644
--- a/sw/source/filter/ww8/docxattributeoutput.hxx
+++ b/sw/source/filter/ww8/docxattributeoutput.hxx
@@ -588,14 +588,8 @@ private:
const sw::Frame *m_pParentFrame;
// close of hyperlink needed
- enum HyperLinkCloseState
- {
- Undetected = 0,
- Detected,
- EndInPrevRun,
- EndInThisRun
- };
- HyperLinkCloseState m_nCloseHyperlinkStatus;
+ bool m_closeHyperlinkInThisRun;
+ bool m_closeHyperlinkInPreviousRun;
struct PostponedGraphic
{