From 4f174e66431628fa1343ec44d63cc3f02cc0bb0b Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Fri, 18 Oct 2019 18:23:18 +0200 Subject: sw: RTF export: export fieldmarks There was some special code that was used only to export ruby attributes; generalise it a little. Change-Id: Iac5316b97e095fb3811404cad0568b9ab63a96f0 Reviewed-on: https://gerrit.libreoffice.org/81085 Tested-by: Jenkins Reviewed-by: Michael Stahl --- sw/source/filter/ww8/rtfattributeoutput.cxx | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx index 1fdbcd307541..078f9dc94dd6 100644 --- a/sw/source/filter/ww8/rtfattributeoutput.cxx +++ b/sw/source/filter/ww8/rtfattributeoutput.cxx @@ -532,7 +532,8 @@ void RtfAttributeOutput::StartRuby(const SwTextNode& rNode, sal_Int32 nPos, void RtfAttributeOutput::EndRuby(const SwTextNode& rNode, sal_Int32 nPos) { - m_rExport.OutputField(nullptr, ww::eEQ, ")", FieldFlags::End | FieldFlags::Close); + m_rExport.OutputField(nullptr, ww::eEQ, ")", + FieldFlags::CmdEnd | FieldFlags::End | FieldFlags::Close); EndRun(&rNode, nPos); } @@ -1585,7 +1586,7 @@ void RtfAttributeOutput::NumberingLevel(sal_uInt8 nLevel, sal_uInt16 nStart, m_rExport.Strm().WriteChar('}'); } -void RtfAttributeOutput::WriteField_Impl(const SwField* pField, ww::eField eType, +void RtfAttributeOutput::WriteField_Impl(const SwField* const pField, ww::eField, const OUString& rFieldCmd, FieldFlags nMode) { // If there are no field instructions, don't export it as a field. @@ -1607,21 +1608,25 @@ void RtfAttributeOutput::WriteField_Impl(const SwField* pField, ww::eField eType if (bHasInstructions) m_aRunText->append("}}"); } - else if (eType == ww::eEQ) + else { - if (FieldFlags::Start & nMode) + if (nMode & FieldFlags::CmdStart) { m_aRunText->append("{" OOO_STRING_SVTOOLS_RTF_FIELD); m_aRunText->append("{" OOO_STRING_SVTOOLS_RTF_IGNORE OOO_STRING_SVTOOLS_RTF_FLDINST - " "); + // paragraph break closes group so open another one "inside" to + " {"); // prevent leaving the field instruction } if (bHasInstructions) m_aRunText->append( msfilter::rtfutil::OutString(rFieldCmd, m_rExport.GetCurrentEncoding())); - if (FieldFlags::End & nMode) + if (nMode & FieldFlags::CmdEnd) { - m_aRunText->append("}{" OOO_STRING_SVTOOLS_RTF_FLDRSLT " "); - m_aRunText->append("}}"); + m_aRunText->append("}}{" OOO_STRING_SVTOOLS_RTF_FLDRSLT " {"); + } + if (nMode & FieldFlags::Close) + { + m_aRunText->append("}}}"); } } } -- cgit