sw/source/filter/ww8/attributeoutputbase.hxx | 2 +- sw/source/filter/ww8/docxattributeoutput.cxx | 2 +- sw/source/filter/ww8/docxattributeoutput.hxx | 2 +- sw/source/filter/ww8/rtfattributeoutput.cxx | 12 ++++++++---- sw/source/filter/ww8/rtfattributeoutput.hxx | 5 ++++- sw/source/filter/ww8/wrtw8nds.cxx | 7 ++++--- sw/source/filter/ww8/ww8atr.cxx | 2 +- sw/source/filter/ww8/ww8attributeoutput.hxx | 2 +- 8 files changed, 21 insertions(+), 13 deletions(-)
New commits: commit d4069372484f18b242a42a1996767f57b031fff6 Author: Miklos Vajna <vmik...@suse.cz> Date: Fri Jun 22 15:41:37 2012 +0200 fdo#50831 fix RTF export of direct run formatting for empty paragraphs Change-Id: I5f0e7aefdea80bbb9cf61b991c5b706bd2023dfa Signed-off-by: Michael Meeks <michael.me...@suse.com> diff --git a/sw/source/filter/ww8/attributeoutputbase.hxx b/sw/source/filter/ww8/attributeoutputbase.hxx index 4b08cbf..c257a02 100644 --- a/sw/source/filter/ww8/attributeoutputbase.hxx +++ b/sw/source/filter/ww8/attributeoutputbase.hxx @@ -159,7 +159,7 @@ public: virtual void EmptyParagraph() = 0; /// Start of the text run. - virtual void StartRun( const SwRedlineData* pRedlineData ) = 0; + virtual void StartRun( const SwRedlineData* pRedlineData, bool bSingleEmptyRun = false ) = 0; /// End of the text run. virtual void EndRun() = 0; diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 0ea06b7..f8615c6 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -499,7 +499,7 @@ void DocxAttributeOutput::EndParagraphProperties() m_pSerializer->mergeTopMarks( sax_fastparser::MERGE_MARKS_PREPEND ); } -void DocxAttributeOutput::StartRun( const SwRedlineData* pRedlineData ) +void DocxAttributeOutput::StartRun( const SwRedlineData* pRedlineData, bool /*bSingleEmptyRun*/ ) { // if there is some redlining in the document, output it StartRedline( pRedlineData ); diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx index 79c8b02..12a87d4 100644 --- a/sw/source/filter/ww8/docxattributeoutput.hxx +++ b/sw/source/filter/ww8/docxattributeoutput.hxx @@ -90,7 +90,7 @@ public: virtual void EndParagraphProperties(); /// Start of the text run. - virtual void StartRun( const SwRedlineData* pRedlineData ); + virtual void StartRun( const SwRedlineData* pRedlineData, bool bSingleEmptyRun = false ); /// End of the text run. virtual void EndRun(); diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx index 5019a40..0c3533b 100644 --- a/sw/source/filter/ww8/rtfattributeoutput.cxx +++ b/sw/source/filter/ww8/rtfattributeoutput.cxx @@ -374,11 +374,13 @@ void RtfAttributeOutput::EndParagraphProperties() m_rExport.Strm() << m_aStyles.makeStringAndClear().getStr(); } -void RtfAttributeOutput::StartRun( const SwRedlineData* pRedlineData ) +void RtfAttributeOutput::StartRun( const SwRedlineData* pRedlineData, bool bSingleEmptyRun ) { OSL_TRACE("%s", OSL_THIS_FUNC); - m_aRun.append('{'); + m_bSingleEmptyRun = bSingleEmptyRun; + if (!m_bSingleEmptyRun) + m_aRun.append('{'); // if there is some redlining in the document, output it Redline( pRedlineData ); @@ -391,7 +393,8 @@ void RtfAttributeOutput::EndRun() OSL_TRACE("%s", OSL_THIS_FUNC); m_aRun.append(m_rExport.sNewLine); m_aRun.append(m_aRunText.makeStringAndClear()); - m_aRun.append('}'); + if (!m_bSingleEmptyRun) + m_aRun.append('}'); } void RtfAttributeOutput::StartRunProperties() @@ -3020,7 +3023,8 @@ RtfAttributeOutput::RtfAttributeOutput( RtfExport &rExport ) m_bWroteCellInfo( false ), m_bHadFieldResult( false ), m_bTableRowEnded( false ), - m_aCells() + m_aCells(), + m_bSingleEmptyRun(false) { OSL_TRACE("%s", OSL_THIS_FUNC); } diff --git a/sw/source/filter/ww8/rtfattributeoutput.hxx b/sw/source/filter/ww8/rtfattributeoutput.hxx index eea4b8c..406f063 100644 --- a/sw/source/filter/ww8/rtfattributeoutput.hxx +++ b/sw/source/filter/ww8/rtfattributeoutput.hxx @@ -63,7 +63,7 @@ public: virtual void EndParagraphProperties(); /// Start of the text run. - virtual void StartRun( const SwRedlineData* pRedlineData ); + virtual void StartRun( const SwRedlineData* pRedlineData, bool bSingleEmptyRun = false ); /// End of the text run. virtual void EndRun(); @@ -539,6 +539,9 @@ private: /// Number of cells from the table definition, by depth. std::map<sal_uInt32,sal_uInt32> m_aCells; + + /// If we're in a paragraph that has a single empty run only. + bool m_bSingleEmptyRun; public: RtfAttributeOutput( RtfExport &rExport ); diff --git a/sw/source/filter/ww8/wrtw8nds.cxx b/sw/source/filter/ww8/wrtw8nds.cxx index 95895e8..50e6c60 100644 --- a/sw/source/filter/ww8/wrtw8nds.cxx +++ b/sw/source/filter/ww8/wrtw8nds.cxx @@ -1810,12 +1810,13 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode ) do { const SwRedlineData* pRedlineData = aAttrIter.GetRedline( nAktPos ); - AttrOutput().StartRun( pRedlineData ); + xub_StrLen nNextAttr = GetNextPos( &aAttrIter, rNode, nAktPos ); + // Is this the only run in this paragraph and it's empty? + bool bSingleEmptyRun = nAktPos == 0 && nNextAttr == 0; + AttrOutput().StartRun( pRedlineData, bSingleEmptyRun ); if( nTxtTyp == TXT_FTN || nTxtTyp == TXT_EDN ) AttrOutput().FootnoteEndnoteRefTag(); - xub_StrLen nNextAttr = GetNextPos( &aAttrIter, rNode, nAktPos ); - if( nNextAttr > nEnd ) nNextAttr = nEnd; diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index 79deb33..fd269de 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -972,7 +972,7 @@ void WW8AttributeOutput::StartRunProperties() } -void WW8AttributeOutput::StartRun( const SwRedlineData* pRedlineData ) +void WW8AttributeOutput::StartRun( const SwRedlineData* pRedlineData, bool /*bSingleEmptyRun*/ ) { if (pRedlineData) { diff --git a/sw/source/filter/ww8/ww8attributeoutput.hxx b/sw/source/filter/ww8/ww8attributeoutput.hxx index fa9c170..f32a038 100644 --- a/sw/source/filter/ww8/ww8attributeoutput.hxx +++ b/sw/source/filter/ww8/ww8attributeoutput.hxx @@ -55,7 +55,7 @@ public: /// Start of the text run. /// - virtual void StartRun( const SwRedlineData* pRedlineData ); + virtual void StartRun( const SwRedlineData* pRedlineData, bool bSingleEmptyRun = false ); /// End of the text run. /// _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits