sw/source/filter/ww8/docxattributeoutput.cxx |  412 +++++-----
 sw/source/filter/ww8/docxexport.cxx          |  104 +-
 sw/source/filter/ww8/docxsdrexport.cxx       |   38 -
 sw/source/filter/ww8/rtfattributeoutput.cxx  |  488 ++++++------
 sw/source/filter/ww8/rtfexport.cxx           |   21 
 sw/source/filter/ww8/writerhelper.cxx        |   22 
 sw/source/filter/ww8/wrtw8esh.cxx            |  628 ++++++++--------
 sw/source/filter/ww8/wrtw8nds.cxx            |   56 -
 sw/source/filter/ww8/wrtw8sty.cxx            |   58 -
 sw/source/filter/ww8/wrtww8.cxx              |  405 +++++-----
 sw/source/filter/ww8/wrtww8gr.cxx            |  218 ++---
 sw/source/filter/ww8/ww8atr.cxx              | 1022 +++++++++++++--------------
 sw/source/filter/ww8/ww8graf.cxx             |  262 +++---
 sw/source/filter/ww8/ww8par.cxx              |  392 +++++-----
 sw/source/filter/ww8/ww8par2.cxx             |  497 ++++++-------
 sw/source/filter/ww8/ww8par3.cxx             |  268 +++----
 sw/source/filter/ww8/ww8par5.cxx             |  114 +--
 sw/source/filter/ww8/ww8par6.cxx             |  323 ++++----
 sw/source/filter/ww8/ww8scan.cxx             |  214 ++---
 19 files changed, 2774 insertions(+), 2768 deletions(-)

New commits:
commit e42166098b13d1bf4f66291550ab326b750bcbed
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Thu Jul 30 10:37:55 2020 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Fri Jul 31 11:56:36 2020 +0200

    loplugin:flatten in sw/filter/ww8
    
    Change-Id: Ia296fc6e6c8f78edf533dedf52996560ae62d143
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99853
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx 
b/sw/source/filter/ww8/docxattributeoutput.cxx
index e90a9efc2e08..6581f93f3834 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -909,75 +909,75 @@ void 
DocxAttributeOutput::SyncNodelessCells(ww8::WW8TableNodeInfoInner::Pointer_
 
 void DocxAttributeOutput::FinishTableRowCell( 
ww8::WW8TableNodeInfoInner::Pointer_t const & pInner, bool bForceEmptyParagraph 
)
 {
-    if ( pInner )
-    {
-        // Where are we in the table
-        sal_uInt32 nRow = pInner->getRow();
-        sal_Int32 nCell = pInner->getCell();
+    if ( !pInner )
+        return;
 
-        InitTableHelper( pInner );
+    // Where are we in the table
+    sal_uInt32 nRow = pInner->getRow();
+    sal_Int32 nCell = pInner->getCell();
 
-        // HACK
-        // msoffice seems to have an internal limitation of 63 columns for 
tables
-        // and refuses to load .docx with more, even though the spec seems to 
allow that;
-        // so simply if there are more columns, don't close the last one 
msoffice will handle
-        // and merge the contents of the remaining ones into it (since we 
don't close the cell
-        // here, following ones will not be opened)
-        const bool limitWorkaround = (nCell >= MAX_CELL_IN_WORD && 
!pInner->isEndOfLine());
-        const bool bEndCell = pInner->isEndOfCell() && !limitWorkaround;
-        const bool bEndRow = pInner->isEndOfLine();
+    InitTableHelper( pInner );
+
+    // HACK
+    // msoffice seems to have an internal limitation of 63 columns for tables
+    // and refuses to load .docx with more, even though the spec seems to 
allow that;
+    // so simply if there are more columns, don't close the last one msoffice 
will handle
+    // and merge the contents of the remaining ones into it (since we don't 
close the cell
+    // here, following ones will not be opened)
+    const bool limitWorkaround = (nCell >= MAX_CELL_IN_WORD && 
!pInner->isEndOfLine());
+    const bool bEndCell = pInner->isEndOfCell() && !limitWorkaround;
+    const bool bEndRow = pInner->isEndOfLine();
 
-        if (bEndCell)
+    if (bEndCell)
+    {
+        while (pInner->getDepth() < m_tableReference->m_nTableDepth)
         {
-            while (pInner->getDepth() < m_tableReference->m_nTableDepth)
-            {
-                //we expect that the higher depth row was closed, and
-                //we are just missing the table close
-                assert(lastOpenCell.back() == -1 && lastClosedCell.back() == 
-1);
-                EndTable();
-            }
+            //we expect that the higher depth row was closed, and
+            //we are just missing the table close
+            assert(lastOpenCell.back() == -1 && lastClosedCell.back() == -1);
+            EndTable();
+        }
 
-            SyncNodelessCells(pInner, nCell, nRow);
+        SyncNodelessCells(pInner, nCell, nRow);
 
-            sal_Int32 nClosedCell = lastClosedCell.back();
-            if (nCell == nClosedCell)
-            {
-                //Start missing trailing cell(s)
-                ++nCell;
-                StartTableCell(pInner, nCell, nRow);
+        sal_Int32 nClosedCell = lastClosedCell.back();
+        if (nCell == nClosedCell)
+        {
+            //Start missing trailing cell(s)
+            ++nCell;
+            StartTableCell(pInner, nCell, nRow);
 
-                //Continue on missing next trailing cell(s)
-                ww8::RowSpansPtr xRowSpans = pInner->getRowSpansOfRow();
-                sal_Int32 nRemainingCells = xRowSpans->size() - nCell;
-                for (sal_Int32 i = 1; i < nRemainingCells; ++i)
+            //Continue on missing next trailing cell(s)
+            ww8::RowSpansPtr xRowSpans = pInner->getRowSpansOfRow();
+            sal_Int32 nRemainingCells = xRowSpans->size() - nCell;
+            for (sal_Int32 i = 1; i < nRemainingCells; ++i)
+            {
+                if (bForceEmptyParagraph)
                 {
-                    if (bForceEmptyParagraph)
-                    {
-                        m_pSerializer->singleElementNS(XML_w, XML_p);
-                    }
-
-                    EndTableCell(nCell);
-
-                    StartTableCell(pInner, nCell, nRow);
+                    m_pSerializer->singleElementNS(XML_w, XML_p);
                 }
-            }
 
-            if (bForceEmptyParagraph)
-            {
-                m_pSerializer->singleElementNS(XML_w, XML_p);
-            }
+                EndTableCell(nCell);
 
-            EndTableCell(nCell);
+                StartTableCell(pInner, nCell, nRow);
+            }
         }
 
-        // This is a line end
-        if (bEndRow)
-            EndTableRow();
+        if (bForceEmptyParagraph)
+        {
+            m_pSerializer->singleElementNS(XML_w, XML_p);
+        }
 
-        // This is the end of the table
-        if (pInner->isFinalEndOfLine())
-            EndTable();
+        EndTableCell(nCell);
     }
+
+    // This is a line end
+    if (bEndRow)
+        EndTableRow();
+
+    // This is the end of the table
+    if (pInner->isFinalEndOfLine())
+        EndTable();
 }
 
 void DocxAttributeOutput::EmptyParagraph()
@@ -2309,32 +2309,32 @@ void DocxAttributeOutput::EndField_Impl( const 
SwTextNode* pNode, sal_Int32 nPos
     }
     // Write the ref field if a bookmark had to be set and the field
     // should be visible
-    if ( rInfos.pField )
-    {
-        sal_uInt16 nSubType = rInfos.pField->GetSubType( );
-        bool bIsSetField = rInfos.pField->GetTyp( )->Which( ) == 
SwFieldIds::SetExp;
-        bool bShowRef = bIsSetField && ( nSubType & 
nsSwExtendedSubType::SUB_INVISIBLE ) == 0;
+    if ( !rInfos.pField )
+        return;
 
-        if ( ( !m_sFieldBkm.isEmpty() ) && bShowRef )
-        {
-            // Write the field beginning
-            m_pSerializer->startElementNS(XML_w, XML_r);
-            m_pSerializer->singleElementNS( XML_w, XML_fldChar,
-                FSNS( XML_w, XML_fldCharType ), "begin" );
-            m_pSerializer->endElementNS( XML_w, XML_r );
+    sal_uInt16 nSubType = rInfos.pField->GetSubType( );
+    bool bIsSetField = rInfos.pField->GetTyp( )->Which( ) == 
SwFieldIds::SetExp;
+    bool bShowRef = bIsSetField && ( nSubType & 
nsSwExtendedSubType::SUB_INVISIBLE ) == 0;
 
-            rInfos.sCmd = FieldString( ww::eREF );
-            rInfos.sCmd += "\"";
-            rInfos.sCmd += m_sFieldBkm;
-            rInfos.sCmd += "\" ";
+    if ( !(( !m_sFieldBkm.isEmpty() ) && bShowRef) )
+        return;
 
-            // Clean the field bookmark data to avoid infinite loop
-            m_sFieldBkm = OUString( );
+    // Write the field beginning
+    m_pSerializer->startElementNS(XML_w, XML_r);
+    m_pSerializer->singleElementNS( XML_w, XML_fldChar,
+        FSNS( XML_w, XML_fldCharType ), "begin" );
+    m_pSerializer->endElementNS( XML_w, XML_r );
 
-            // Write the end of the field
-            EndField_Impl( pNode, nPos, rInfos );
-        }
-    }
+    rInfos.sCmd = FieldString( ww::eREF );
+    rInfos.sCmd += "\"";
+    rInfos.sCmd += m_sFieldBkm;
+    rInfos.sCmd += "\" ";
+
+    // Clean the field bookmark data to avoid infinite loop
+    m_sFieldBkm = OUString( );
+
+    // Write the end of the field
+    EndField_Impl( pNode, nPos, rInfos );
 }
 
 void DocxAttributeOutput::StartRunProperties()
@@ -2693,30 +2693,30 @@ void DocxAttributeOutput::EndRunProperties( const 
SwRedlineData* pRedlineData )
 
 void DocxAttributeOutput::GetSdtEndBefore(const SdrObject* pSdrObj)
 {
-    if (pSdrObj)
-    {
-        uno::Reference<drawing::XShape> 
xShape(const_cast<SdrObject*>(pSdrObj)->getUnoShape(), uno::UNO_QUERY_THROW);
-        uno::Reference< beans::XPropertySet > xPropSet( xShape, uno::UNO_QUERY 
);
-        if( xPropSet.is() )
-        {
-            uno::Reference< beans::XPropertySetInfo > xPropSetInfo = 
xPropSet->getPropertySetInfo();
-            uno::Sequence< beans::PropertyValue > aGrabBag;
-            if (xPropSetInfo.is() && 
xPropSetInfo->hasPropertyByName("FrameInteropGrabBag"))
-            {
-                xPropSet->getPropertyValue("FrameInteropGrabBag") >>= aGrabBag;
-            }
-            else if(xPropSetInfo.is() && 
xPropSetInfo->hasPropertyByName("InteropGrabBag"))
-            {
-                xPropSet->getPropertyValue("InteropGrabBag") >>= aGrabBag;
-            }
+    if (!pSdrObj)
+        return;
 
-            auto pProp = std::find_if(aGrabBag.begin(), aGrabBag.end(),
-                [this](const beans::PropertyValue& rProp) {
-                    return "SdtEndBefore" == rProp.Name && m_bStartedCharSdt 
&& !m_bEndCharSdt; });
-            if (pProp != aGrabBag.end())
-                pProp->Value >>= m_bEndCharSdt;
-        }
+    uno::Reference<drawing::XShape> 
xShape(const_cast<SdrObject*>(pSdrObj)->getUnoShape(), uno::UNO_QUERY_THROW);
+    uno::Reference< beans::XPropertySet > xPropSet( xShape, uno::UNO_QUERY );
+    if( !xPropSet.is() )
+        return;
+
+    uno::Reference< beans::XPropertySetInfo > xPropSetInfo = 
xPropSet->getPropertySetInfo();
+    uno::Sequence< beans::PropertyValue > aGrabBag;
+    if (xPropSetInfo.is() && 
xPropSetInfo->hasPropertyByName("FrameInteropGrabBag"))
+    {
+        xPropSet->getPropertyValue("FrameInteropGrabBag") >>= aGrabBag;
+    }
+    else if(xPropSetInfo.is() && 
xPropSetInfo->hasPropertyByName("InteropGrabBag"))
+    {
+        xPropSet->getPropertyValue("InteropGrabBag") >>= aGrabBag;
     }
+
+    auto pProp = std::find_if(aGrabBag.begin(), aGrabBag.end(),
+        [this](const beans::PropertyValue& rProp) {
+            return "SdtEndBefore" == rProp.Name && m_bStartedCharSdt && 
!m_bEndCharSdt; });
+    if (pProp != aGrabBag.end())
+        pProp->Value >>= m_bEndCharSdt;
 }
 
 void DocxAttributeOutput::WritePostponedGraphic()
@@ -4339,23 +4339,23 @@ void DocxAttributeOutput::TableHeight( 
ww8::WW8TableNodeInfoInner::Pointer_t pTa
     const SwFrameFormat * pLineFormat = pTabLine->GetFrameFormat();
 
     const SwFormatFrameSize& rLSz = pLineFormat->GetFrameSize();
-    if ( SwFrameSize::Variable != rLSz.GetHeightSizeType() && rLSz.GetHeight() 
)
-    {
-        sal_Int32 nHeight = rLSz.GetHeight();
-        const char *pRule = nullptr;
+    if ( !(SwFrameSize::Variable != rLSz.GetHeightSizeType() && 
rLSz.GetHeight()) )
+        return;
 
-        switch ( rLSz.GetHeightSizeType() )
-        {
-            case SwFrameSize::Fixed: pRule = "exact"; break;
-            case SwFrameSize::Minimum: pRule = "atLeast"; break;
-            default:           break;
-        }
+    sal_Int32 nHeight = rLSz.GetHeight();
+    const char *pRule = nullptr;
 
-        if ( pRule )
-            m_pSerializer->singleElementNS( XML_w, XML_trHeight,
-                    FSNS( XML_w, XML_val ), OString::number(nHeight),
-                    FSNS( XML_w, XML_hRule ), pRule );
+    switch ( rLSz.GetHeightSizeType() )
+    {
+        case SwFrameSize::Fixed: pRule = "exact"; break;
+        case SwFrameSize::Minimum: pRule = "atLeast"; break;
+        default:           break;
     }
+
+    if ( pRule )
+        m_pSerializer->singleElementNS( XML_w, XML_trHeight,
+                FSNS( XML_w, XML_val ), OString::number(nHeight),
+                FSNS( XML_w, XML_hRule ), pRule );
 }
 
 void DocxAttributeOutput::TableCanSplit( ww8::WW8TableNodeInfoInner::Pointer_t 
pTableTextNodeInfoInner )
@@ -4398,20 +4398,20 @@ void DocxAttributeOutput::TableVerticalCell( 
ww8::WW8TableNodeInfoInner::Pointer
     SwWriteTableRow *pRow = rRows[ pTableTextNodeInfoInner->getRow( ) ].get();
     sal_uInt32 nCell = pTableTextNodeInfoInner->getCell();
     const SwWriteTableCells& rTableCells =  pRow->GetCells();
-    if (nCell < rTableCells.size() )
+    if (nCell >= rTableCells.size() )
+        return;
+
+    const SwWriteTableCell *const pCell = pRow->GetCells()[ nCell ].get();
+    switch( pCell->GetVertOri())
     {
-        const SwWriteTableCell *const pCell = pRow->GetCells()[ nCell ].get();
-        switch( pCell->GetVertOri())
-        {
-        case text::VertOrientation::TOP:
-            break;
-        case text::VertOrientation::CENTER:
-            m_pSerializer->singleElementNS(XML_w, XML_vAlign, FSNS(XML_w, 
XML_val), "center");
-            break;
-        case text::VertOrientation::BOTTOM:
-            m_pSerializer->singleElementNS(XML_w, XML_vAlign, FSNS(XML_w, 
XML_val), "bottom");
-            break;
-        }
+    case text::VertOrientation::TOP:
+        break;
+    case text::VertOrientation::CENTER:
+        m_pSerializer->singleElementNS(XML_w, XML_vAlign, FSNS(XML_w, 
XML_val), "center");
+        break;
+    case text::VertOrientation::BOTTOM:
+        m_pSerializer->singleElementNS(XML_w, XML_vAlign, FSNS(XML_w, 
XML_val), "bottom");
+        break;
     }
 }
 
@@ -4801,22 +4801,22 @@ void DocxAttributeOutput::WriteSrcRect(const SdrObject* 
pSdrObj, const SwFrameFo
         nCropB -= rBox.GetDistance( SvxBoxItemLine::BOTTOM );
     }
 
-    if ( (0 != nCropL) || (0 != nCropT) || (0 != nCropR) || (0 != nCropB) )
-    {
-        double  widthMultiplier  = 100000.0/aOriginalSize.Width();
-        double  heightMultiplier = 100000.0/aOriginalSize.Height();
+    if ( !((0 != nCropL) || (0 != nCropT) || (0 != nCropR) || (0 != nCropB)) )
+        return;
 
-        sal_Int32 left   = static_cast<sal_Int32>(rtl::math::round(nCropL * 
widthMultiplier));
-        sal_Int32 right  = static_cast<sal_Int32>(rtl::math::round(nCropR * 
widthMultiplier));
-        sal_Int32 top    = static_cast<sal_Int32>(rtl::math::round(nCropT * 
heightMultiplier));
-        sal_Int32 bottom = static_cast<sal_Int32>(rtl::math::round(nCropB * 
heightMultiplier));
+    double  widthMultiplier  = 100000.0/aOriginalSize.Width();
+    double  heightMultiplier = 100000.0/aOriginalSize.Height();
 
-        m_pSerializer->singleElementNS( XML_a, XML_srcRect,
-             XML_l, OString::number(left),
-             XML_t, OString::number(top),
-             XML_r, OString::number(right),
-             XML_b, OString::number(bottom) );
-    }
+    sal_Int32 left   = static_cast<sal_Int32>(rtl::math::round(nCropL * 
widthMultiplier));
+    sal_Int32 right  = static_cast<sal_Int32>(rtl::math::round(nCropR * 
widthMultiplier));
+    sal_Int32 top    = static_cast<sal_Int32>(rtl::math::round(nCropT * 
heightMultiplier));
+    sal_Int32 bottom = static_cast<sal_Int32>(rtl::math::round(nCropB * 
heightMultiplier));
+
+    m_pSerializer->singleElementNS( XML_a, XML_srcRect,
+         XML_l, OString::number(left),
+         XML_t, OString::number(top),
+         XML_r, OString::number(right),
+         XML_b, OString::number(bottom) );
 }
 
 void DocxAttributeOutput::PopRelIdCache()
@@ -7178,23 +7178,23 @@ void DocxAttributeOutput::CharFont( const SvxFontItem& 
rFont)
     GetExport().GetId( rFont ); // ensure font info is written to fontTable.xml
     const OUString& sFontName(rFont.GetFamilyName());
     const OString sFontNameUtf8 = OUStringToOString(sFontName, 
RTL_TEXTENCODING_UTF8);
-    if (!sFontNameUtf8.isEmpty())
-    {
-        if (m_pFontsAttrList &&
-            (   m_pFontsAttrList->hasAttribute(FSNS( XML_w, XML_ascii )) ||
-                m_pFontsAttrList->hasAttribute(FSNS( XML_w, XML_hAnsi ))    )
-            )
-        {
-            // tdf#38778: do to fields output into DOC the font could be added 
before and after field declaration
-            // that all sub runs of the field will have correct font inside.
-            // For DOCX we should do not add the same font information twice 
in the same node
-            return;
-        }
+    if (sFontNameUtf8.isEmpty())
+        return;
 
-        AddToAttrList( m_pFontsAttrList, 2,
-            FSNS( XML_w, XML_ascii ), sFontNameUtf8.getStr(),
-            FSNS( XML_w, XML_hAnsi ), sFontNameUtf8.getStr() );
+    if (m_pFontsAttrList &&
+        (   m_pFontsAttrList->hasAttribute(FSNS( XML_w, XML_ascii )) ||
+            m_pFontsAttrList->hasAttribute(FSNS( XML_w, XML_hAnsi ))    )
+        )
+    {
+        // tdf#38778: do to fields output into DOC the font could be added 
before and after field declaration
+        // that all sub runs of the field will have correct font inside.
+        // For DOCX we should do not add the same font information twice in 
the same node
+        return;
     }
+
+    AddToAttrList( m_pFontsAttrList, 2,
+        FSNS( XML_w, XML_ascii ), sFontNameUtf8.getStr(),
+        FSNS( XML_w, XML_hAnsi ), sFontNameUtf8.getStr() );
 }
 
 void DocxAttributeOutput::CharFontSize( const SvxFontHeightItem& rFontSize)
@@ -7689,22 +7689,22 @@ void DocxAttributeOutput::WriteField_Impl( const 
SwField* pField, ww::eField eTy
     infos.bOpen = bool(FieldFlags::Start & nMode);
     m_Fields.push_back( infos );
 
-    if ( pField )
-    {
-        SwFieldIds nType = pField->GetTyp( )->Which( );
-        sal_uInt16 nSubType = pField->GetSubType();
+    if ( !pField )
+        return;
 
-        // TODO Any other field types here ?
-        if ( ( nType == SwFieldIds::SetExp ) && ( nSubType & 
nsSwGetSetExpType::GSE_STRING ) )
-        {
-            const SwSetExpField *pSet = static_cast<const SwSetExpField*>( 
pField );
-            m_sFieldBkm = pSet->GetPar1( );
-        }
-        else if ( nType == SwFieldIds::Dropdown )
-        {
-            const SwDropDownField* pDropDown = static_cast<const 
SwDropDownField*>( pField );
-            m_sFieldBkm = pDropDown->GetName( );
-        }
+    SwFieldIds nType = pField->GetTyp( )->Which( );
+    sal_uInt16 nSubType = pField->GetSubType();
+
+    // TODO Any other field types here ?
+    if ( ( nType == SwFieldIds::SetExp ) && ( nSubType & 
nsSwGetSetExpType::GSE_STRING ) )
+    {
+        const SwSetExpField *pSet = static_cast<const SwSetExpField*>( pField 
);
+        m_sFieldBkm = pSet->GetPar1( );
+    }
+    else if ( nType == SwFieldIds::Dropdown )
+    {
+        const SwDropDownField* pDropDown = static_cast<const 
SwDropDownField*>( pField );
+        m_sFieldBkm = pDropDown->GetName( );
     }
 }
 
@@ -8231,22 +8231,22 @@ void DocxAttributeOutput::ParaHyphenZone( const 
SvxHyphenZoneItem& rHyphenZone )
 
 void DocxAttributeOutput::ParaNumRule_Impl( const SwTextNode* pTextNd, 
sal_Int32 nLvl, sal_Int32 nNumId )
 {
-    if ( USHRT_MAX != nNumId )
-    {
-        const sal_Int32 nTableSize = m_rExport.m_pUsedNumTable ? 
m_rExport.m_pUsedNumTable->size() : 0;
-        const SwNumRule* pRule = nNumId > 0 && nNumId <= nTableSize ? 
(*m_rExport.m_pUsedNumTable)[nNumId-1] : nullptr;
-        const bool bOutlineRule = pRule && pRule->IsOutlineRule();
+    if ( USHRT_MAX == nNumId )
+        return;
 
-        // Do not export outline rules (Chapter Numbering) as paragraph 
properties, only as style properties.
-        if ( !pTextNd || !bOutlineRule )
-        {
-            m_pSerializer->startElementNS(XML_w, XML_numPr);
-            m_pSerializer->singleElementNS(XML_w, XML_ilvl,
-                                           FSNS(XML_w, XML_val), 
OString::number(nLvl));
-            m_pSerializer->singleElementNS(XML_w, XML_numId,
-                                           FSNS(XML_w, XML_val), 
OString::number(nNumId));
-            m_pSerializer->endElementNS( XML_w, XML_numPr );
-        }
+    const sal_Int32 nTableSize = m_rExport.m_pUsedNumTable ? 
m_rExport.m_pUsedNumTable->size() : 0;
+    const SwNumRule* pRule = nNumId > 0 && nNumId <= nTableSize ? 
(*m_rExport.m_pUsedNumTable)[nNumId-1] : nullptr;
+    const bool bOutlineRule = pRule && pRule->IsOutlineRule();
+
+    // Do not export outline rules (Chapter Numbering) as paragraph 
properties, only as style properties.
+    if ( !pTextNd || !bOutlineRule )
+    {
+        m_pSerializer->startElementNS(XML_w, XML_numPr);
+        m_pSerializer->singleElementNS(XML_w, XML_ilvl,
+                                       FSNS(XML_w, XML_val), 
OString::number(nLvl));
+        m_pSerializer->singleElementNS(XML_w, XML_numId,
+                                       FSNS(XML_w, XML_val), 
OString::number(nNumId));
+        m_pSerializer->endElementNS( XML_w, XML_numPr );
     }
 }
 
@@ -8920,33 +8920,33 @@ void DocxAttributeOutput::FormatBox( const SvxBoxItem& 
rBox )
         aOutputBorderOptions.aShadowLocation = pShadowItem->GetLocation();
     }
 
-    if ( !m_bOpenedSectPr || GetWritingHeaderFooter())
-    {
-        // Not inside a section
-
-        // Open the paragraph's borders tag
-        m_pSerializer->startElementNS(XML_w, XML_pBdr);
+    if ( !(!m_bOpenedSectPr || GetWritingHeaderFooter()))
+        return;
 
-        std::map<SvxBoxItemLine, css::table::BorderLine2> aStyleBorders;
-        const SvxBoxItem* pInherited = nullptr;
-        if ( GetExport().m_pStyAttr )
-            pInherited = GetExport().m_pStyAttr->GetItem<SvxBoxItem>(RES_BOX);
-        else if ( GetExport().m_pCurrentStyle && 
GetExport().m_pCurrentStyle->DerivedFrom() )
-            pInherited = 
GetExport().m_pCurrentStyle->DerivedFrom()->GetAttrSet().GetItem<SvxBoxItem>(RES_BOX);
+    // Not inside a section
 
-        if ( pInherited )
-        {
-            aStyleBorders[ SvxBoxItemLine::TOP ] = 
SvxBoxItem::SvxLineToLine(pInherited->GetTop(), /*bConvert=*/false);
-            aStyleBorders[ SvxBoxItemLine::BOTTOM ] = 
SvxBoxItem::SvxLineToLine(pInherited->GetBottom(), false);
-            aStyleBorders[ SvxBoxItemLine::LEFT ] = 
SvxBoxItem::SvxLineToLine(pInherited->GetLeft(), false);
-            aStyleBorders[ SvxBoxItemLine::RIGHT ] = 
SvxBoxItem::SvxLineToLine(pInherited->GetRight(), false);
-        }
+    // Open the paragraph's borders tag
+    m_pSerializer->startElementNS(XML_w, XML_pBdr);
 
-        impl_borders( m_pSerializer, rBox, aOutputBorderOptions, aStyleBorders 
);
+    std::map<SvxBoxItemLine, css::table::BorderLine2> aStyleBorders;
+    const SvxBoxItem* pInherited = nullptr;
+    if ( GetExport().m_pStyAttr )
+        pInherited = GetExport().m_pStyAttr->GetItem<SvxBoxItem>(RES_BOX);
+    else if ( GetExport().m_pCurrentStyle && 
GetExport().m_pCurrentStyle->DerivedFrom() )
+        pInherited = 
GetExport().m_pCurrentStyle->DerivedFrom()->GetAttrSet().GetItem<SvxBoxItem>(RES_BOX);
 
-        // Close the paragraph's borders tag
-        m_pSerializer->endElementNS( XML_w, XML_pBdr );
+    if ( pInherited )
+    {
+        aStyleBorders[ SvxBoxItemLine::TOP ] = 
SvxBoxItem::SvxLineToLine(pInherited->GetTop(), /*bConvert=*/false);
+        aStyleBorders[ SvxBoxItemLine::BOTTOM ] = 
SvxBoxItem::SvxLineToLine(pInherited->GetBottom(), false);
+        aStyleBorders[ SvxBoxItemLine::LEFT ] = 
SvxBoxItem::SvxLineToLine(pInherited->GetLeft(), false);
+        aStyleBorders[ SvxBoxItemLine::RIGHT ] = 
SvxBoxItem::SvxLineToLine(pInherited->GetRight(), false);
     }
+
+    impl_borders( m_pSerializer, rBox, aOutputBorderOptions, aStyleBorders );
+
+    // Close the paragraph's borders tag
+    m_pSerializer->endElementNS( XML_w, XML_pBdr );
 }
 
 void DocxAttributeOutput::FormatColumns_Impl( sal_uInt16 nCols, const 
SwFormatCol& rCol, bool bEven, SwTwips nPageSize )
diff --git a/sw/source/filter/ww8/docxexport.cxx 
b/sw/source/filter/ww8/docxexport.cxx
index 160cc8c385d3..e603d2deb3a2 100644
--- a/sw/source/filter/ww8/docxexport.cxx
+++ b/sw/source/filter/ww8/docxexport.cxx
@@ -693,52 +693,52 @@ void DocxExport::WriteFootnotesEndnotes()
         m_pAttrOutput->SetSerializer( m_pDocumentFS );
     }
 
-    if ( m_pAttrOutput->HasEndnotes() )
-    {
-        // setup word/styles.xml and the relations + content type
-        m_pFilter->addRelation( m_pDocumentFS->getOutputStream(),
-                oox::getRelationship(Relationship::ENDNOTES),
-                "endnotes.xml" );
+    if ( !m_pAttrOutput->HasEndnotes() )
+        return;
 
-        ::sax_fastparser::FSHelperPtr pEndnotesFS =
-            m_pFilter->openFragmentStreamWithSerializer( "word/endnotes.xml",
-                    
"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml" );
+    // setup word/styles.xml and the relations + content type
+    m_pFilter->addRelation( m_pDocumentFS->getOutputStream(),
+            oox::getRelationship(Relationship::ENDNOTES),
+            "endnotes.xml" );
 
-        // switch the serializer to redirect the output to word/endnotes.xml
-        m_pAttrOutput->SetSerializer( pEndnotesFS );
-        // tdf#99227
-        m_pSdrExport->setSerializer( pEndnotesFS );
-        // tdf#107969
-        m_pVMLExport->SetFS(pEndnotesFS);
+    ::sax_fastparser::FSHelperPtr pEndnotesFS =
+        m_pFilter->openFragmentStreamWithSerializer( "word/endnotes.xml",
+                
"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml" );
 
-        // do the work
-        m_pAttrOutput->FootnotesEndnotes( false );
+    // switch the serializer to redirect the output to word/endnotes.xml
+    m_pAttrOutput->SetSerializer( pEndnotesFS );
+    // tdf#99227
+    m_pSdrExport->setSerializer( pEndnotesFS );
+    // tdf#107969
+    m_pVMLExport->SetFS(pEndnotesFS);
 
-        // switch the serializer back
-        m_pVMLExport->SetFS(m_pDocumentFS);
-        m_pSdrExport->setSerializer( m_pDocumentFS );
-        m_pAttrOutput->SetSerializer( m_pDocumentFS );
-    }
+    // do the work
+    m_pAttrOutput->FootnotesEndnotes( false );
+
+    // switch the serializer back
+    m_pVMLExport->SetFS(m_pDocumentFS);
+    m_pSdrExport->setSerializer( m_pDocumentFS );
+    m_pAttrOutput->SetSerializer( m_pDocumentFS );
 }
 
 void DocxExport::WritePostitFields()
 {
-    if ( m_pAttrOutput->HasPostitFields() )
-    {
-        m_pFilter->addRelation( m_pDocumentFS->getOutputStream(),
-                oox::getRelationship(Relationship::COMMENTS),
-                "comments.xml" );
+    if ( !m_pAttrOutput->HasPostitFields() )
+        return;
 
-        ::sax_fastparser::FSHelperPtr pPostitFS =
-            m_pFilter->openFragmentStreamWithSerializer( "word/comments.xml",
-                    
"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml" );
+    m_pFilter->addRelation( m_pDocumentFS->getOutputStream(),
+            oox::getRelationship(Relationship::COMMENTS),
+            "comments.xml" );
 
-        pPostitFS->startElementNS( XML_w, XML_comments, MainXmlNamespaces());
-        m_pAttrOutput->SetSerializer( pPostitFS );
-        m_pAttrOutput->WritePostitFields();
-        m_pAttrOutput->SetSerializer( m_pDocumentFS );
-        pPostitFS->endElementNS( XML_w, XML_comments );
-    }
+    ::sax_fastparser::FSHelperPtr pPostitFS =
+        m_pFilter->openFragmentStreamWithSerializer( "word/comments.xml",
+                
"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml" );
+
+    pPostitFS->startElementNS( XML_w, XML_comments, MainXmlNamespaces());
+    m_pAttrOutput->SetSerializer( pPostitFS );
+    m_pAttrOutput->WritePostitFields();
+    m_pAttrOutput->SetSerializer( m_pDocumentFS );
+    pPostitFS->endElementNS( XML_w, XML_comments );
 }
 
 void DocxExport::WriteNumbering()
@@ -1538,26 +1538,26 @@ void DocxExport::WriteVBA()
         return;
 
     uno::Reference<io::XStream> xDataStream = 
xDocumentStorage->openStreamElement(aDataName, nOpenMode);
-    if (xDataStream.is())
-    {
-        // Then the data stream, which wants to work with an already set
-        // xProjectStream.
-        std::unique_ptr<SvStream> 
pIn(utl::UcbStreamHelper::CreateStream(xDataStream));
+    if (!xDataStream.is())
+        return;
 
-        uno::Reference<io::XStream> 
xOutputStream(GetFilter().openFragmentStream("word/vbaData.xml", 
"application/vnd.ms-word.vbaData+xml"), uno::UNO_QUERY);
-        if (!xOutputStream.is())
-            return;
-        std::unique_ptr<SvStream> 
pOut(utl::UcbStreamHelper::CreateStream(xOutputStream));
+    // Then the data stream, which wants to work with an already set
+    // xProjectStream.
+    std::unique_ptr<SvStream> 
pIn(utl::UcbStreamHelper::CreateStream(xDataStream));
 
-        // Write the stream.
-        pOut->WriteStream(*pIn);
+    uno::Reference<io::XStream> 
xOutputStream(GetFilter().openFragmentStream("word/vbaData.xml", 
"application/vnd.ms-word.vbaData+xml"), uno::UNO_QUERY);
+    if (!xOutputStream.is())
+        return;
+    std::unique_ptr<SvStream> 
pOut(utl::UcbStreamHelper::CreateStream(xOutputStream));
 
-        // Write the relationship.
-        if (!xProjectStream.is())
-            return;
+    // Write the stream.
+    pOut->WriteStream(*pIn);
 
-        m_pFilter->addRelation(xProjectStream, 
oox::getRelationship(Relationship::WORDVBADATA), "vbaData.xml");
-    }
+    // Write the relationship.
+    if (!xProjectStream.is())
+        return;
+
+    m_pFilter->addRelation(xProjectStream, 
oox::getRelationship(Relationship::WORDVBADATA), "vbaData.xml");
 }
 
 void DocxExport::WriteEmbeddings()
diff --git a/sw/source/filter/ww8/docxsdrexport.cxx 
b/sw/source/filter/ww8/docxsdrexport.cxx
index bc540c232337..a70801e78773 100644
--- a/sw/source/filter/ww8/docxsdrexport.cxx
+++ b/sw/source/filter/ww8/docxsdrexport.cxx
@@ -796,26 +796,26 @@ void DocxSdrExport::startDMLAnchorInline(const 
SwFrameFormat* pFrameFormat, cons
     }
 
     // No? Then just approximate based on what we have.
-    if (isAnchor && !nWrapToken)
+    if (!(isAnchor && !nWrapToken))
+        return;
+
+    switch (pFrameFormat->GetSurround().GetValue())
     {
-        switch (pFrameFormat->GetSurround().GetValue())
-        {
-            case css::text::WrapTextMode_NONE:
-                m_pImpl->getSerializer()->singleElementNS(XML_wp, 
XML_wrapTopAndBottom);
-                break;
-            case css::text::WrapTextMode_THROUGH:
-                m_pImpl->getSerializer()->singleElementNS(XML_wp, 
XML_wrapNone);
-                break;
-            case css::text::WrapTextMode_PARALLEL:
-                m_pImpl->getSerializer()->singleElementNS(XML_wp, 
XML_wrapSquare, XML_wrapText,
-                                                          "bothSides");
-                break;
-            case css::text::WrapTextMode_DYNAMIC:
-            default:
-                m_pImpl->getSerializer()->singleElementNS(XML_wp, 
XML_wrapSquare, XML_wrapText,
-                                                          "largest");
-                break;
-        }
+        case css::text::WrapTextMode_NONE:
+            m_pImpl->getSerializer()->singleElementNS(XML_wp, 
XML_wrapTopAndBottom);
+            break;
+        case css::text::WrapTextMode_THROUGH:
+            m_pImpl->getSerializer()->singleElementNS(XML_wp, XML_wrapNone);
+            break;
+        case css::text::WrapTextMode_PARALLEL:
+            m_pImpl->getSerializer()->singleElementNS(XML_wp, XML_wrapSquare, 
XML_wrapText,
+                                                      "bothSides");
+            break;
+        case css::text::WrapTextMode_DYNAMIC:
+        default:
+            m_pImpl->getSerializer()->singleElementNS(XML_wp, XML_wrapSquare, 
XML_wrapText,
+                                                      "largest");
+            break;
     }
 }
 
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx 
b/sw/source/filter/ww8/rtfattributeoutput.cxx
index 10d38a569e92..22e468d4c65a 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.cxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.cxx
@@ -731,33 +731,33 @@ void RtfAttributeOutput::TableDefaultBorders(
         = pRow->GetCells()[pTableTextNodeInfoInner->getCell()].get();
     const SwFrameFormat* pCellFormat = pCell->GetBox()->GetFrameFormat();
     const SfxPoolItem* pItem;
-    if (pCellFormat->GetAttrSet().HasItem(RES_BOX, &pItem))
+    if (!pCellFormat->GetAttrSet().HasItem(RES_BOX, &pItem))
+        return;
+
+    auto& rBox = static_cast<const SvxBoxItem&>(*pItem);
+    static const SvxBoxItemLine aBorders[] = { SvxBoxItemLine::TOP, 
SvxBoxItemLine::LEFT,
+                                               SvxBoxItemLine::BOTTOM, 
SvxBoxItemLine::RIGHT };
+    static const char* aBorderNames[]
+        = { OOO_STRING_SVTOOLS_RTF_CLBRDRT, OOO_STRING_SVTOOLS_RTF_CLBRDRL,
+            OOO_STRING_SVTOOLS_RTF_CLBRDRB, OOO_STRING_SVTOOLS_RTF_CLBRDRR };
+    //Yes left and top are swapped with each other for cell padding! Because
+    //that's what the thundering annoying rtf export/import word xp does.
+    static const char* aCellPadNames[]
+        = { OOO_STRING_SVTOOLS_RTF_CLPADL, OOO_STRING_SVTOOLS_RTF_CLPADT,
+            OOO_STRING_SVTOOLS_RTF_CLPADB, OOO_STRING_SVTOOLS_RTF_CLPADR };
+    static const char* aCellPadUnits[]
+        = { OOO_STRING_SVTOOLS_RTF_CLPADFL, OOO_STRING_SVTOOLS_RTF_CLPADFT,
+            OOO_STRING_SVTOOLS_RTF_CLPADFB, OOO_STRING_SVTOOLS_RTF_CLPADFR };
+    for (int i = 0; i < 4; ++i)
     {
-        auto& rBox = static_cast<const SvxBoxItem&>(*pItem);
-        static const SvxBoxItemLine aBorders[] = { SvxBoxItemLine::TOP, 
SvxBoxItemLine::LEFT,
-                                                   SvxBoxItemLine::BOTTOM, 
SvxBoxItemLine::RIGHT };
-        static const char* aBorderNames[]
-            = { OOO_STRING_SVTOOLS_RTF_CLBRDRT, OOO_STRING_SVTOOLS_RTF_CLBRDRL,
-                OOO_STRING_SVTOOLS_RTF_CLBRDRB, OOO_STRING_SVTOOLS_RTF_CLBRDRR 
};
-        //Yes left and top are swapped with each other for cell padding! 
Because
-        //that's what the thundering annoying rtf export/import word xp does.
-        static const char* aCellPadNames[]
-            = { OOO_STRING_SVTOOLS_RTF_CLPADL, OOO_STRING_SVTOOLS_RTF_CLPADT,
-                OOO_STRING_SVTOOLS_RTF_CLPADB, OOO_STRING_SVTOOLS_RTF_CLPADR };
-        static const char* aCellPadUnits[]
-            = { OOO_STRING_SVTOOLS_RTF_CLPADFL, OOO_STRING_SVTOOLS_RTF_CLPADFT,
-                OOO_STRING_SVTOOLS_RTF_CLPADFB, OOO_STRING_SVTOOLS_RTF_CLPADFR 
};
-        for (int i = 0; i < 4; ++i)
+        if (const editeng::SvxBorderLine* pLn = rBox.GetLine(aBorders[i]))
+            m_aRowDefs.append(OutTBLBorderLine(m_rExport, pLn, 
aBorderNames[i]));
+        if (rBox.GetDistance(aBorders[i]))
         {
-            if (const editeng::SvxBorderLine* pLn = rBox.GetLine(aBorders[i]))
-                m_aRowDefs.append(OutTBLBorderLine(m_rExport, pLn, 
aBorderNames[i]));
-            if (rBox.GetDistance(aBorders[i]))
-            {
-                m_aRowDefs.append(aCellPadUnits[i]);
-                m_aRowDefs.append(sal_Int32(3));
-                m_aRowDefs.append(aCellPadNames[i]);
-                
m_aRowDefs.append(static_cast<sal_Int32>(rBox.GetDistance(aBorders[i])));
-            }
+            m_aRowDefs.append(aCellPadUnits[i]);
+            m_aRowDefs.append(sal_Int32(3));
+            m_aRowDefs.append(aCellPadNames[i]);
+            
m_aRowDefs.append(static_cast<sal_Int32>(rBox.GetDistance(aBorders[i])));
         }
     }
 }
@@ -817,27 +817,27 @@ void 
RtfAttributeOutput::TableHeight(ww8::WW8TableNodeInfoInner::Pointer_t pTabl
     const SwFrameFormat* pLineFormat = pTabLine->GetFrameFormat();
     const SwFormatFrameSize& rLSz = pLineFormat->GetFrameSize();
 
-    if (SwFrameSize::Variable != rLSz.GetHeightSizeType() && rLSz.GetHeight())
-    {
-        sal_Int32 nHeight = 0;
+    if (!(SwFrameSize::Variable != rLSz.GetHeightSizeType() && 
rLSz.GetHeight()))
+        return;
 
-        switch (rLSz.GetHeightSizeType())
-        {
-            case SwFrameSize::Fixed:
-                nHeight = -rLSz.GetHeight();
-                break;
-            case SwFrameSize::Minimum:
-                nHeight = rLSz.GetHeight();
-                break;
-            default:
-                break;
-        }
+    sal_Int32 nHeight = 0;
 
-        if (nHeight)
-        {
-            m_aRowDefs.append(OOO_STRING_SVTOOLS_RTF_TRRH);
-            m_aRowDefs.append(nHeight);
-        }
+    switch (rLSz.GetHeightSizeType())
+    {
+        case SwFrameSize::Fixed:
+            nHeight = -rLSz.GetHeight();
+            break;
+        case SwFrameSize::Minimum:
+            nHeight = rLSz.GetHeight();
+            break;
+        default:
+            break;
+    }
+
+    if (nHeight)
+    {
+        m_aRowDefs.append(OOO_STRING_SVTOOLS_RTF_TRRH);
+        m_aRowDefs.append(nHeight);
     }
 }
 
@@ -889,19 +889,21 @@ void RtfAttributeOutput::TableVerticalCell(
         m_aRowDefs.append(OOO_STRING_SVTOOLS_RTF_CLVMRG);
 
     // vertical alignment
-    if (pCellFormat->GetAttrSet().HasItem(RES_VERT_ORIENT, &pItem))
-        switch (static_cast<const SwFormatVertOrient*>(pItem)->GetVertOrient())
-        {
-            case text::VertOrientation::CENTER:
-                m_aRowDefs.append(OOO_STRING_SVTOOLS_RTF_CLVERTALC);
-                break;
-            case text::VertOrientation::BOTTOM:
-                m_aRowDefs.append(OOO_STRING_SVTOOLS_RTF_CLVERTALB);
-                break;
-            default:
-                m_aRowDefs.append(OOO_STRING_SVTOOLS_RTF_CLVERTALT);
-                break;
-        }
+    if (!pCellFormat->GetAttrSet().HasItem(RES_VERT_ORIENT, &pItem))
+        return;
+
+    switch (static_cast<const SwFormatVertOrient*>(pItem)->GetVertOrient())
+    {
+        case text::VertOrientation::CENTER:
+            m_aRowDefs.append(OOO_STRING_SVTOOLS_RTF_CLVERTALC);
+            break;
+        case text::VertOrientation::BOTTOM:
+            m_aRowDefs.append(OOO_STRING_SVTOOLS_RTF_CLVERTALB);
+            break;
+        default:
+            m_aRowDefs.append(OOO_STRING_SVTOOLS_RTF_CLVERTALT);
+            break;
+    }
 }
 
 void 
RtfAttributeOutput::TableNodeInfoInner(ww8::WW8TableNodeInfoInner::Pointer_t 
pNodeInfoInner)
@@ -1089,26 +1091,26 @@ void RtfAttributeOutput::EndTable()
 
 void RtfAttributeOutput::FinishTableRowCell(const 
ww8::WW8TableNodeInfoInner::Pointer_t& pInner)
 {
-    if (pInner)
-    {
-        // Where are we in the table
-        sal_uInt32 nRow = pInner->getRow();
+    if (!pInner)
+        return;
 
-        const SwTable* pTable = pInner->getTable();
-        const SwTableLines& rLines = pTable->GetTabLines();
-        sal_uInt16 nLinesCount = rLines.size();
+    // Where are we in the table
+    sal_uInt32 nRow = pInner->getRow();
 
-        if (pInner->isEndOfCell())
-            EndTableCell();
+    const SwTable* pTable = pInner->getTable();
+    const SwTableLines& rLines = pTable->GetTabLines();
+    sal_uInt16 nLinesCount = rLines.size();
 
-        // This is a line end
-        if (pInner->isEndOfLine())
-            EndTableRow();
+    if (pInner->isEndOfCell())
+        EndTableCell();
 
-        // This is the end of the table
-        if (pInner->isEndOfLine() && (nRow + 1) == nLinesCount)
-            EndTable();
-    }
+    // This is a line end
+    if (pInner->isEndOfLine())
+        EndTableRow();
+
+    // This is the end of the table
+    if (pInner->isEndOfLine() && (nRow + 1) == nLinesCount)
+        EndTable();
 }
 
 void RtfAttributeOutput::StartStyles()
@@ -1858,23 +1860,23 @@ void 
lcl_TextFrameRelativeSize(std::vector<std::pair<OString, OString>>& rFlyPro
         rFlyProperties.emplace_back(std::make_pair("sizerelh", aRelation));
     }
     const sal_uInt8 nHeightPercent = rSize.GetHeightPercent();
-    if (nHeightPercent && nHeightPercent != SwFormatFrameSize::SYNCED)
-    {
-        rFlyProperties.push_back(
-            std::make_pair<OString, OString>("pctVert", 
OString::number(nHeightPercent * 10)));
+    if (!(nHeightPercent && nHeightPercent != SwFormatFrameSize::SYNCED))
+        return;
 
-        OString aRelation;
-        switch (rSize.GetHeightPercentRelation())
-        {
-            case text::RelOrientation::PAGE_FRAME:
-                aRelation = "1"; // page
-                break;
-            default:
-                aRelation = "0"; // margin
-                break;
-        }
-        rFlyProperties.emplace_back(std::make_pair("sizerelv", aRelation));
+    rFlyProperties.push_back(
+        std::make_pair<OString, OString>("pctVert", 
OString::number(nHeightPercent * 10)));
+
+    OString aRelation;
+    switch (rSize.GetHeightPercentRelation())
+    {
+        case text::RelOrientation::PAGE_FRAME:
+            aRelation = "1"; // page
+            break;
+        default:
+            aRelation = "0"; // margin
+            break;
     }
+    rFlyProperties.emplace_back(std::make_pair("sizerelv", aRelation));
 }
 }
 
@@ -2730,26 +2732,26 @@ void RtfAttributeOutput::CharEmphasisMark(const 
SvxEmphasisMarkItem& rEmphasisMa
 
 void RtfAttributeOutput::CharTwoLines(const SvxTwoLinesItem& rTwoLines)
 {
-    if (rTwoLines.GetValue())
-    {
-        sal_Unicode cStart = rTwoLines.GetStartBracket();
-        sal_Unicode cEnd = rTwoLines.GetEndBracket();
-
-        sal_uInt16 nType;
-        if (!cStart && !cEnd)
-            nType = 0;
-        else if ('{' == cStart || '}' == cEnd)
-            nType = 4;
-        else if ('<' == cStart || '>' == cEnd)
-            nType = 3;
-        else if ('[' == cStart || ']' == cEnd)
-            nType = 2;
-        else // all other kind of brackets
-            nType = 1;
-
-        m_aStyles.append(OOO_STRING_SVTOOLS_RTF_TWOINONE);
-        m_aStyles.append(static_cast<sal_Int32>(nType));
-    }
+    if (!rTwoLines.GetValue())
+        return;
+
+    sal_Unicode cStart = rTwoLines.GetStartBracket();
+    sal_Unicode cEnd = rTwoLines.GetEndBracket();
+
+    sal_uInt16 nType;
+    if (!cStart && !cEnd)
+        nType = 0;
+    else if ('{' == cStart || '}' == cEnd)
+        nType = 4;
+    else if ('<' == cStart || '>' == cEnd)
+        nType = 3;
+    else if ('[' == cStart || ']' == cEnd)
+        nType = 2;
+    else // all other kind of brackets
+        nType = 1;
+
+    m_aStyles.append(OOO_STRING_SVTOOLS_RTF_TWOINONE);
+    m_aStyles.append(static_cast<sal_Int32>(nType));
 }
 
 void RtfAttributeOutput::CharScaleWidth(const SvxCharScaleWidthItem& 
rScaleWidth)
@@ -2804,18 +2806,18 @@ void RtfAttributeOutput::CharHighlight(const 
SvxBrushItem& rBrush)
 
 void RtfAttributeOutput::TextINetFormat(const SwFormatINetFormat& rURL)
 {
-    if (!rURL.GetValue().isEmpty())
-    {
-        const SwCharFormat* pFormat;
-        const SwTextINetFormat* pTextAtr = rURL.GetTextINetFormat();
+    if (rURL.GetValue().isEmpty())
+        return;
 
-        if (pTextAtr && nullptr != (pFormat = pTextAtr->GetCharFormat()))
-        {
-            sal_uInt16 nStyle = m_rExport.GetId(pFormat);
-            OString* pString = m_rExport.GetStyle(nStyle);
-            if (pString)
-                m_aStyles.append(*pString);
-        }
+    const SwCharFormat* pFormat;
+    const SwTextINetFormat* pTextAtr = rURL.GetTextINetFormat();
+
+    if (pTextAtr && nullptr != (pFormat = pTextAtr->GetCharFormat()))
+    {
+        sal_uInt16 nStyle = m_rExport.GetId(pFormat);
+        OString* pString = m_rExport.GetStyle(nStyle);
+        if (pString)
+            m_aStyles.append(*pString);
     }
 }
 
@@ -3323,121 +3325,121 @@ void RtfAttributeOutput::FormatSurround(const 
SwFormatSurround& rSurround)
 
 void RtfAttributeOutput::FormatVertOrientation(const SwFormatVertOrient& 
rFlyVert)
 {
-    if (m_rExport.m_bOutFlyFrameAttrs && m_rExport.GetRTFFlySyntax())
+    if (!(m_rExport.m_bOutFlyFrameAttrs && m_rExport.GetRTFFlySyntax()))
+        return;
+
+    switch (rFlyVert.GetRelationOrient())
     {
-        switch (rFlyVert.GetRelationOrient())
-        {
-            case text::RelOrientation::PAGE_FRAME:
-                m_aFlyProperties.push_back(
-                    std::make_pair<OString, OString>("posrelv", 
OString::number(1)));
-                break;
-            default:
-                m_aFlyProperties.push_back(
-                    std::make_pair<OString, OString>("posrelv", 
OString::number(2)));
-                m_rExport.Strm()
-                    .WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPBYPARA)
-                    .WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPBYIGNORE);
-                break;
-        }
+        case text::RelOrientation::PAGE_FRAME:
+            m_aFlyProperties.push_back(
+                std::make_pair<OString, OString>("posrelv", 
OString::number(1)));
+            break;
+        default:
+            m_aFlyProperties.push_back(
+                std::make_pair<OString, OString>("posrelv", 
OString::number(2)));
+            m_rExport.Strm()
+                .WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPBYPARA)
+                .WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPBYIGNORE);
+            break;
+    }
 
-        switch (rFlyVert.GetVertOrient())
-        {
-            case text::VertOrientation::TOP:
-            case text::VertOrientation::LINE_TOP:
-                m_aFlyProperties.push_back(
-                    std::make_pair<OString, OString>("posv", 
OString::number(1)));
-                break;
-            case text::VertOrientation::BOTTOM:
-            case text::VertOrientation::LINE_BOTTOM:
-                m_aFlyProperties.push_back(
-                    std::make_pair<OString, OString>("posv", 
OString::number(3)));
-                break;
-            case text::VertOrientation::CENTER:
-            case text::VertOrientation::LINE_CENTER:
-                m_aFlyProperties.push_back(
-                    std::make_pair<OString, OString>("posv", 
OString::number(2)));
-                break;
-            default:
-                break;
-        }
+    switch (rFlyVert.GetVertOrient())
+    {
+        case text::VertOrientation::TOP:
+        case text::VertOrientation::LINE_TOP:
+            m_aFlyProperties.push_back(
+                std::make_pair<OString, OString>("posv", OString::number(1)));
+            break;
+        case text::VertOrientation::BOTTOM:
+        case text::VertOrientation::LINE_BOTTOM:
+            m_aFlyProperties.push_back(
+                std::make_pair<OString, OString>("posv", OString::number(3)));
+            break;
+        case text::VertOrientation::CENTER:
+        case text::VertOrientation::LINE_CENTER:
+            m_aFlyProperties.push_back(
+                std::make_pair<OString, OString>("posv", OString::number(2)));
+            break;
+        default:
+            break;
+    }
 
-        m_rExport.Strm().WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPTOP);
-        m_rExport.OutLong(rFlyVert.GetPos());
-        if (m_pFlyFrameSize)
-        {
-            m_rExport.Strm().WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPBOTTOM);
-            m_rExport.OutLong(rFlyVert.GetPos() + m_pFlyFrameSize->Height());
-        }
+    m_rExport.Strm().WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPTOP);
+    m_rExport.OutLong(rFlyVert.GetPos());
+    if (m_pFlyFrameSize)
+    {
+        m_rExport.Strm().WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPBOTTOM);
+        m_rExport.OutLong(rFlyVert.GetPos() + m_pFlyFrameSize->Height());
     }
 }
 
 void RtfAttributeOutput::FormatHorizOrientation(const SwFormatHoriOrient& 
rFlyHori)
 {
-    if (m_rExport.m_bOutFlyFrameAttrs && m_rExport.GetRTFFlySyntax())
+    if (!(m_rExport.m_bOutFlyFrameAttrs && m_rExport.GetRTFFlySyntax()))
+        return;
+
+    switch (rFlyHori.GetRelationOrient())
     {
-        switch (rFlyHori.GetRelationOrient())
-        {
-            case text::RelOrientation::PAGE_FRAME:
-                m_aFlyProperties.push_back(
-                    std::make_pair<OString, OString>("posrelh", 
OString::number(1)));
-                break;
-            default:
-                m_aFlyProperties.push_back(
-                    std::make_pair<OString, OString>("posrelh", 
OString::number(2)));
-                m_rExport.Strm()
-                    .WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPBXCOLUMN)
-                    .WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPBXIGNORE);
-                break;
-        }
+        case text::RelOrientation::PAGE_FRAME:
+            m_aFlyProperties.push_back(
+                std::make_pair<OString, OString>("posrelh", 
OString::number(1)));
+            break;
+        default:
+            m_aFlyProperties.push_back(
+                std::make_pair<OString, OString>("posrelh", 
OString::number(2)));
+            m_rExport.Strm()
+                .WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPBXCOLUMN)
+                .WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPBXIGNORE);
+            break;
+    }
 
-        switch (rFlyHori.GetHoriOrient())
-        {
-            case text::HoriOrientation::LEFT:
-                m_aFlyProperties.push_back(
-                    std::make_pair<OString, OString>("posh", 
OString::number(1)));
-                break;
-            case text::HoriOrientation::CENTER:
-                m_aFlyProperties.push_back(
-                    std::make_pair<OString, OString>("posh", 
OString::number(2)));
-                break;
-            case text::HoriOrientation::RIGHT:
-                m_aFlyProperties.push_back(
-                    std::make_pair<OString, OString>("posh", 
OString::number(3)));
-                break;
-            default:
-                break;
-        }
+    switch (rFlyHori.GetHoriOrient())
+    {
+        case text::HoriOrientation::LEFT:
+            m_aFlyProperties.push_back(
+                std::make_pair<OString, OString>("posh", OString::number(1)));
+            break;
+        case text::HoriOrientation::CENTER:
+            m_aFlyProperties.push_back(
+                std::make_pair<OString, OString>("posh", OString::number(2)));
+            break;
+        case text::HoriOrientation::RIGHT:
+            m_aFlyProperties.push_back(
+                std::make_pair<OString, OString>("posh", OString::number(3)));
+            break;
+        default:
+            break;
+    }
 
-        m_rExport.Strm().WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPLEFT);
-        m_rExport.OutLong(rFlyHori.GetPos());
-        if (m_pFlyFrameSize)
-        {
-            m_rExport.Strm().WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPRIGHT);
-            m_rExport.OutLong(rFlyHori.GetPos() + m_pFlyFrameSize->Width());
-        }
+    m_rExport.Strm().WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPLEFT);
+    m_rExport.OutLong(rFlyHori.GetPos());
+    if (m_pFlyFrameSize)
+    {
+        m_rExport.Strm().WriteCharPtr(OOO_STRING_SVTOOLS_RTF_SHPRIGHT);
+        m_rExport.OutLong(rFlyHori.GetPos() + m_pFlyFrameSize->Width());
     }
 }
 
 void RtfAttributeOutput::FormatAnchor(const SwFormatAnchor& rAnchor)
 {
-    if (!m_rExport.GetRTFFlySyntax())
+    if (m_rExport.GetRTFFlySyntax())
+        return;
+
+    RndStdIds eId = rAnchor.GetAnchorId();
+    m_aRunText->append(OOO_STRING_SVTOOLS_RTF_FLYANCHOR);
+    m_aRunText->append(static_cast<sal_Int32>(eId));
+    switch (eId)
     {
-        RndStdIds eId = rAnchor.GetAnchorId();
-        m_aRunText->append(OOO_STRING_SVTOOLS_RTF_FLYANCHOR);
-        m_aRunText->append(static_cast<sal_Int32>(eId));
-        switch (eId)
-        {
-            case RndStdIds::FLY_AT_PAGE:
-                m_aRunText->append(OOO_STRING_SVTOOLS_RTF_FLYPAGE);
-                
m_aRunText->append(static_cast<sal_Int32>(rAnchor.GetPageNum()));
-                break;
-            case RndStdIds::FLY_AT_PARA:
-            case RndStdIds::FLY_AS_CHAR:
-                m_aRunText->append(OOO_STRING_SVTOOLS_RTF_FLYCNTNT);
-                break;
-            default:
-                break;
-        }
+        case RndStdIds::FLY_AT_PAGE:
+            m_aRunText->append(OOO_STRING_SVTOOLS_RTF_FLYPAGE);
+            m_aRunText->append(static_cast<sal_Int32>(rAnchor.GetPageNum()));
+            break;
+        case RndStdIds::FLY_AT_PARA:
+        case RndStdIds::FLY_AS_CHAR:
+            m_aRunText->append(OOO_STRING_SVTOOLS_RTF_FLYCNTNT);
+            break;
+        default:
+            break;
     }
 }
 
@@ -3464,35 +3466,35 @@ void RtfAttributeOutput::FormatFillStyle(const 
XFillStyleItem& rFillStyle)
 
 void RtfAttributeOutput::FormatFillGradient(const XFillGradientItem& 
rFillGradient)
 {
-    if (*m_oFillStyle == drawing::FillStyle_GRADIENT)
-    {
-        m_aFlyProperties.push_back(std::make_pair<OString, OString>(
-            "fillType", OString::number(7))); // Shade using the fillAngle
+    if (*m_oFillStyle != drawing::FillStyle_GRADIENT)
+        return;
 
-        const XGradient& rGradient = rFillGradient.GetGradientValue();
-        const Color& rStartColor = rGradient.GetStartColor();
-        m_aFlyProperties.push_back(std::make_pair<OString, OString>(
-            "fillBackColor", 
OString::number(wwUtility::RGBToBGR(rStartColor))));
+    m_aFlyProperties.push_back(std::make_pair<OString, OString>(
+        "fillType", OString::number(7))); // Shade using the fillAngle
 
-        const Color& rEndColor = rGradient.GetEndColor();
-        m_aFlyProperties.push_back(std::make_pair<OString, OString>(
-            "fillColor", OString::number(wwUtility::RGBToBGR(rEndColor))));
+    const XGradient& rGradient = rFillGradient.GetGradientValue();
+    const Color& rStartColor = rGradient.GetStartColor();
+    m_aFlyProperties.push_back(std::make_pair<OString, OString>(
+        "fillBackColor", OString::number(wwUtility::RGBToBGR(rStartColor))));
 
-        switch (rGradient.GetGradientStyle())
-        {
-            case css::awt::GradientStyle_LINEAR:
-                break;
-            case css::awt::GradientStyle_AXIAL:
-                m_aFlyProperties.push_back(
-                    std::make_pair<OString, OString>("fillFocus", 
OString::number(50)));
-                break;
-            case css::awt::GradientStyle_RADIAL:
-            case css::awt::GradientStyle_ELLIPTICAL:
-            case css::awt::GradientStyle_SQUARE:
-            case css::awt::GradientStyle_RECT:
-            default:
-                break;
-        }
+    const Color& rEndColor = rGradient.GetEndColor();
+    m_aFlyProperties.push_back(std::make_pair<OString, OString>(
+        "fillColor", OString::number(wwUtility::RGBToBGR(rEndColor))));
+
+    switch (rGradient.GetGradientStyle())
+    {
+        case css::awt::GradientStyle_LINEAR:
+            break;
+        case css::awt::GradientStyle_AXIAL:
+            m_aFlyProperties.push_back(
+                std::make_pair<OString, OString>("fillFocus", 
OString::number(50)));
+            break;
+        case css::awt::GradientStyle_RADIAL:
+        case css::awt::GradientStyle_ELLIPTICAL:
+        case css::awt::GradientStyle_SQUARE:
+        case css::awt::GradientStyle_RECT:
+        default:
+            break;
     }
 }
 
diff --git a/sw/source/filter/ww8/rtfexport.cxx 
b/sw/source/filter/ww8/rtfexport.cxx
index 57ef3730a4d0..71916fd3466f 100644
--- a/sw/source/filter/ww8/rtfexport.cxx
+++ b/sw/source/filter/ww8/rtfexport.cxx
@@ -1079,19 +1079,18 @@ SvStream& RtfExport::OutLong(long nVal) { return 
Writer::OutLong(Strm(), nVal);
 
 void RtfExport::OutUnicode(const char* pToken, const OUString& rContent, bool 
bUpr)
 {
-    if (!rContent.isEmpty())
+    if (rContent.isEmpty())
+        return;
+
+    if (!bUpr)
     {
-        if (!bUpr)
-        {
-            Strm().WriteChar('{').WriteCharPtr(pToken).WriteChar(' ');
-            Strm().WriteCharPtr(
-                msfilter::rtfutil::OutString(rContent, 
m_eCurrentEncoding).getStr());
-            Strm().WriteChar('}');
-        }
-        else
-            Strm().WriteCharPtr(
-                msfilter::rtfutil::OutStringUpr(pToken, rContent, 
m_eCurrentEncoding).getStr());
+        Strm().WriteChar('{').WriteCharPtr(pToken).WriteChar(' ');
+        Strm().WriteCharPtr(msfilter::rtfutil::OutString(rContent, 
m_eCurrentEncoding).getStr());
+        Strm().WriteChar('}');
     }
+    else
+        Strm().WriteCharPtr(
+            msfilter::rtfutil::OutStringUpr(pToken, rContent, 
m_eCurrentEncoding).getStr());
 }
 
 void RtfExport::OutDateTime(const char* pStr, const util::DateTime& rDT)
diff --git a/sw/source/filter/ww8/writerhelper.cxx 
b/sw/source/filter/ww8/writerhelper.cxx
index e52fa5412dc7..26027a22d57a 100644
--- a/sw/source/filter/ww8/writerhelper.cxx
+++ b/sw/source/filter/ww8/writerhelper.cxx
@@ -319,19 +319,19 @@ namespace sw
 
         DrawingOLEAdaptor::~DrawingOLEAdaptor()
         {
-            if (mxIPRef.is())
-            {
-                OSL_ENSURE( 
!mrPers.GetEmbeddedObjectContainer().HasEmbeddedObject( mxIPRef ), "Object in 
adaptor is inserted?!" );
-                try
-                {
-                    mxIPRef->close(true);
-                }
-                catch ( const css::util::CloseVetoException& )
-                {
-                }
+            if (!mxIPRef.is())
+                return;
 
-                mxIPRef = nullptr;
+            OSL_ENSURE( 
!mrPers.GetEmbeddedObjectContainer().HasEmbeddedObject( mxIPRef ), "Object in 
adaptor is inserted?!" );
+            try
+            {
+                mxIPRef->close(true);
             }
+            catch ( const css::util::CloseVetoException& )
+            {
+            }
+
+            mxIPRef = nullptr;
         }
     }
 
diff --git a/sw/source/filter/ww8/wrtw8esh.cxx 
b/sw/source/filter/ww8/wrtw8esh.cxx
index a721682939f9..a34d80d5ffb4 100644
--- a/sw/source/filter/ww8/wrtw8esh.cxx
+++ b/sw/source/filter/ww8/wrtw8esh.cxx
@@ -276,29 +276,29 @@ void SwBasicEscherEx::PreWriteHyperlinkWithinFly(const 
SwFrameFormat& rFormat,Es
 {
     const SfxPoolItem* pItem;
     const SwAttrSet& rAttrSet = rFormat.GetAttrSet();
-    if (SfxItemState::SET == rAttrSet.GetItemState(RES_URL, true, &pItem))
+    if (SfxItemState::SET != rAttrSet.GetItemState(RES_URL, true, &pItem))
+        return;
+
+    const SwFormatURL *pINetFormat = dynamic_cast<const SwFormatURL*>(pItem);
+    if (!(pINetFormat && !pINetFormat->GetURL().isEmpty()))
+        return;
+
+    SvMemoryStream aStrm;
+    WriteHyperlinkWithinFly( aStrm, pINetFormat );
+    rPropOpt.AddOpt(ESCHER_Prop_pihlShape, true, 0, aStrm);
+    sal_uInt32 nValue;
+    OUString aNamestr = pINetFormat->GetName();
+    if (!aNamestr.isEmpty())
     {
-        const SwFormatURL *pINetFormat = dynamic_cast<const 
SwFormatURL*>(pItem);
-        if (pINetFormat && !pINetFormat->GetURL().isEmpty())
-        {
-            SvMemoryStream aStrm;
-            WriteHyperlinkWithinFly( aStrm, pINetFormat );
-            rPropOpt.AddOpt(ESCHER_Prop_pihlShape, true, 0, aStrm);
-            sal_uInt32 nValue;
-            OUString aNamestr = pINetFormat->GetName();
-            if (!aNamestr.isEmpty())
-            {
-                rPropOpt.AddOpt(ESCHER_Prop_wzName, aNamestr );
-            }
-            if(rPropOpt.GetOpt( ESCHER_Prop_fPrint, nValue))
-            {
-                nValue|=0x03080008;
-                rPropOpt.AddOpt(ESCHER_Prop_fPrint, nValue );
-            }
-            else
-                rPropOpt.AddOpt(ESCHER_Prop_fPrint, 0x03080008 );
-        }
+        rPropOpt.AddOpt(ESCHER_Prop_wzName, aNamestr );
+    }
+    if(rPropOpt.GetOpt( ESCHER_Prop_fPrint, nValue))
+    {
+        nValue|=0x03080008;
+        rPropOpt.AddOpt(ESCHER_Prop_fPrint, nValue );
     }
+    else
+        rPropOpt.AddOpt(ESCHER_Prop_fPrint, 0x03080008 );
 }
 
 namespace
@@ -620,234 +620,234 @@ void PlcDrawObj::WritePlc( WW8Export& rWrt ) const
 
     sal_uInt32 nFcStart = rWrt.pTableStrm->Tell();
 
-    if (!maDrawObjs.empty())
-    {
-        // write CPs
-        WW8Fib& rFib = *rWrt.pFib;
-        WW8_CP nCpOffs = GetCpOffset(rFib);
+    if (maDrawObjs.empty())
+        return;
 
-        for (const auto& rDrawObj : maDrawObjs)
-            SwWW8Writer::WriteLong(*rWrt.pTableStrm, rDrawObj.mnCp - nCpOffs);
+    // write CPs
+    WW8Fib& rFib = *rWrt.pFib;
+    WW8_CP nCpOffs = GetCpOffset(rFib);
 
-        SwWW8Writer::WriteLong(*rWrt.pTableStrm, rFib.m_ccpText + 
rFib.m_ccpFootnote +
-            rFib.m_ccpHdr + rFib.m_ccpEdn + rFib.m_ccpTxbx + rFib.m_ccpHdrTxbx 
+ 1);
+    for (const auto& rDrawObj : maDrawObjs)
+        SwWW8Writer::WriteLong(*rWrt.pTableStrm, rDrawObj.mnCp - nCpOffs);
 
-        for (const auto& rDrawObj : maDrawObjs)
-        {
-            // write the fspa-struct
-            const ww8::Frame &rFrameFormat = rDrawObj.maContent;
-            const SwFrameFormat &rFormat = rFrameFormat.GetFrameFormat();
-            const SdrObject* pObj = rFormat.FindRealSdrObject();
-
-            tools::Rectangle aRect;
-            SwFormatVertOrient rVOr = rFormat.GetVertOrient();
-            SwFormatHoriOrient rHOr = rFormat.GetHoriOrient();
-            // #i30669# - convert the positioning attributes.
-            // Most positions are converted, if layout information exists.
-            const bool bPosConverted =
-                WinwordAnchoring::ConvertPosition( rHOr, rVOr, rFormat );
-
-            Point aObjPos;
-            bool bHasHeightWidthSwapped(false);
-            if (RES_FLYFRMFMT == rFormat.Which())
-            {
-                SwRect aLayRect(rFormat.FindLayoutRect(false, &aObjPos));
-                // the Object is not visible - so get the values from
-                // the format. The Position may not be correct.
-                if( aLayRect.IsEmpty() )
-                    aRect.SetSize( rFormat.GetFrameSize().GetSize() );
-                else
-                {
-                    // #i56090# Do not only consider the first client
-                    // Note that we actually would have to find the maximum 
size of the
-                    // frame format clients. However, this already should work 
in most cases.
-                    const SwRect aSizeRect(rFormat.FindLayoutRect());
-                    if ( aSizeRect.Width() > aLayRect.Width() )
-                        aLayRect.Width( aSizeRect.Width() );
-
-                    aRect = aLayRect.SVRect();
-                }
-            }
-            else
-            {
-                OSL_ENSURE(pObj, "Where is the SDR-Object?");
-                if (pObj)
-                {
-                    aRect = pObj->GetLogicRect();
+    SwWW8Writer::WriteLong(*rWrt.pTableStrm, rFib.m_ccpText + 
rFib.m_ccpFootnote +
+        rFib.m_ccpHdr + rFib.m_ccpEdn + rFib.m_ccpTxbx + rFib.m_ccpHdrTxbx + 
1);
 
-                    // rotating to vertical means swapping height and width as 
seen in SvxMSDffManager::ImportShape
-                    const long nAngle = NormAngle36000( pObj->GetRotateAngle() 
);
-                    const bool bAllowSwap = pObj->GetObjIdentifier() != 
OBJ_LINE && pObj->GetObjIdentifier() != OBJ_GRUP;
-                    if ( bAllowSwap && (( nAngle > 4500 && nAngle <= 13500 ) 
|| ( nAngle > 22500 && nAngle <= 31500 )) )
-                    {
-                        const long nWidth  = aRect.getWidth();
-                        const long nHeight = aRect.getHeight();
-                        aRect.setWidth( nHeight );
-                        aRect.setHeight( nWidth );
-                        bHasHeightWidthSwapped = true;
-                    }
-                }
-            }
+    for (const auto& rDrawObj : maDrawObjs)
+    {
+        // write the fspa-struct
+        const ww8::Frame &rFrameFormat = rDrawObj.maContent;
+        const SwFrameFormat &rFormat = rFrameFormat.GetFrameFormat();
+        const SdrObject* pObj = rFormat.FindRealSdrObject();
 
-            // #i30669# - use converted position, if conversion is performed.
-            // Unify position determination of Writer fly frames
-            // and drawing objects.
-            if ( bPosConverted )
-            {
-                aRect.SetPos( Point( rHOr.GetPos(), rVOr.GetPos() ) );
-            }
+        tools::Rectangle aRect;
+        SwFormatVertOrient rVOr = rFormat.GetVertOrient();
+        SwFormatHoriOrient rHOr = rFormat.GetHoriOrient();
+        // #i30669# - convert the positioning attributes.
+        // Most positions are converted, if layout information exists.
+        const bool bPosConverted =
+            WinwordAnchoring::ConvertPosition( rHOr, rVOr, rFormat );
+
+        Point aObjPos;
+        bool bHasHeightWidthSwapped(false);
+        if (RES_FLYFRMFMT == rFormat.Which())
+        {
+            SwRect aLayRect(rFormat.FindLayoutRect(false, &aObjPos));
+            // the Object is not visible - so get the values from
+            // the format. The Position may not be correct.
+            if( aLayRect.IsEmpty() )
+                aRect.SetSize( rFormat.GetFrameSize().GetSize() );
             else
             {
-                aRect -= rDrawObj.maParentPos;
-                aObjPos = aRect.TopLeft();
-                if (text::VertOrientation::NONE == rVOr.GetVertOrient())
-                {
-                    // #i22673#
-                    sal_Int16 eOri = rVOr.GetRelationOrient();
-                    if (eOri == text::RelOrientation::CHAR || eOri == 
text::RelOrientation::TEXT_LINE)
-                        aObjPos.setY( -rVOr.GetPos() );
-                    else
-                        aObjPos.setY( rVOr.GetPos() );
-                }
-                if (text::HoriOrientation::NONE == rHOr.GetHoriOrient())
-                    aObjPos.setX( rHOr.GetPos() );
-                aRect.SetPos( aObjPos );
+                // #i56090# Do not only consider the first client
+                // Note that we actually would have to find the maximum size 
of the
+                // frame format clients. However, this already should work in 
most cases.
+                const SwRect aSizeRect(rFormat.FindLayoutRect());
+                if ( aSizeRect.Width() > aLayRect.Width() )
+                    aLayRect.Width( aSizeRect.Width() );
+
+                aRect = aLayRect.SVRect();
             }
-
-            sal_Int32 nThick = rDrawObj.mnThick;
-
-            //If we are being exported as an inline hack, set
-            //corner to 0 and forget about border thickness for positioning
-            if (rFrameFormat.IsInline())
+        }
+        else
+        {
+            OSL_ENSURE(pObj, "Where is the SDR-Object?");
+            if (pObj)
             {
-                aRect.SetPos(Point(0,0));
-                nThick = 0;
-            }
+                aRect = pObj->GetLogicRect();
 
-            // spid
-            SwWW8Writer::WriteLong(*rWrt.pTableStrm, rDrawObj.mnShapeId);
-
-            SwTwips nLeft = aRect.Left() + nThick;
-            SwTwips nRight = aRect.Right() - nThick;
-            SwTwips nTop = aRect.Top() + nThick;
-            SwTwips nBottom = aRect.Bottom() - nThick;
-
-            // tdf#93675, 0 below line/paragraph and/or top line/paragraph with
-            // wrap top+bottom or other wraps is affecting the line directly
-            // above the anchor line, which seems odd, but a tiny adjustment
-            // here to bring the top down convinces msoffice to wrap like us
-            if (nTop == 0 && !rFrameFormat.IsInline() &&
-                rVOr.GetVertOrient() == text::VertOrientation::NONE &&
-                rVOr.GetRelationOrient() == text::RelOrientation::FRAME)
-            {
-                nTop = 8;
+                // rotating to vertical means swapping height and width as 
seen in SvxMSDffManager::ImportShape
+                const long nAngle = NormAngle36000( pObj->GetRotateAngle() );
+                const bool bAllowSwap = pObj->GetObjIdentifier() != OBJ_LINE 
&& pObj->GetObjIdentifier() != OBJ_GRUP;
+                if ( bAllowSwap && (( nAngle > 4500 && nAngle <= 13500 ) || ( 
nAngle > 22500 && nAngle <= 31500 )) )
+                {
+                    const long nWidth  = aRect.getWidth();
+                    const long nHeight = aRect.getHeight();
+                    aRect.setWidth( nHeight );
+                    aRect.setHeight( nWidth );
+                    bHasHeightWidthSwapped = true;
+                }
             }
+        }
 
-            //Nasty swap for bidi if necessary
-            rWrt.MiserableRTLFrameFormatHack(nLeft, nRight, rFrameFormat);
-
-            // tdf#70838. Word relates the position to the unrotated rectangle,
-            // Writer to the rotated one. Because the rotation is around 
center,
-            // the difference counts half.
-            if(pObj && pObj->GetRotateAngle())
+        // #i30669# - use converted position, if conversion is performed.
+        // Unify position determination of Writer fly frames
+        // and drawing objects.
+        if ( bPosConverted )
+        {
+            aRect.SetPos( Point( rHOr.GetPos(), rVOr.GetPos() ) );
+        }
+        else
+        {
+            aRect -= rDrawObj.maParentPos;
+            aObjPos = aRect.TopLeft();
+            if (text::VertOrientation::NONE == rVOr.GetVertOrient())
             {
-                SwTwips nXOff;
-                SwTwips nYOff;
-                SwTwips nSnapWidth = pObj->GetSnapRect().getWidth();
-                SwTwips nSnapHeight = pObj->GetSnapRect().getHeight();
-                SwTwips nLogicWidth = pObj->GetLogicRect().getWidth();
-                SwTwips nLogicHeight = pObj->GetLogicRect().getHeight();
-                // +1 for to compensate integer arithmetic rounding errors
-                if(bHasHeightWidthSwapped)
-                {
-                    nXOff = (nSnapWidth - nLogicHeight + 1) / 2;
-                    nYOff = (nSnapHeight - nLogicWidth + 1) / 2;
-                }
+                // #i22673#
+                sal_Int16 eOri = rVOr.GetRelationOrient();
+                if (eOri == text::RelOrientation::CHAR || eOri == 
text::RelOrientation::TEXT_LINE)
+                    aObjPos.setY( -rVOr.GetPos() );
                 else
-                {
-                    nXOff = (nSnapWidth - nLogicWidth + 1) / 2;
-                    nYOff = (nSnapHeight - nLogicHeight + 1) / 2;
-                }
-                nLeft += nXOff;
-                nRight += nXOff;
-                nTop += nYOff;
-                nBottom += nYOff;
+                    aObjPos.setY( rVOr.GetPos() );
             }
+            if (text::HoriOrientation::NONE == rHOr.GetHoriOrient())
+                aObjPos.setX( rHOr.GetPos() );
+            aRect.SetPos( aObjPos );
+        }
 
-            //xaLeft/yaTop/xaRight/yaBottom - rel. to anchor
-            //(most of) the border is outside the graphic is word, so
-            //change dimensions to fit
-            SwWW8Writer::WriteLong(*rWrt.pTableStrm, nLeft);
-            SwWW8Writer::WriteLong(*rWrt.pTableStrm, nTop);
-            SwWW8Writer::WriteLong(*rWrt.pTableStrm, nRight);
-            SwWW8Writer::WriteLong(*rWrt.pTableStrm, nBottom);
-
-            //fHdr/bx/by/wr/wrk/fRcaSimple/fBelowText/fAnchorLock
-            sal_uInt16 nFlags=0;
-            //If nFlags isn't 0x14 its overridden by the escher properties
-            if (RndStdIds::FLY_AT_PAGE == rFormat.GetAnchor().GetAnchorId())
-                nFlags = 0x0000;
-            else
-                nFlags = 0x0014;        // x-rel to text,  y-rel to text
+        sal_Int32 nThick = rDrawObj.mnThick;
 
-            const SwFormatSurround& rSurr = rFormat.GetSurround();
-            sal_uInt16 nContour = rSurr.IsContour() ? 0x0080 : 0x0040;
-            css::text::WrapTextMode eSurround = rSurr.GetSurround();
+        //If we are being exported as an inline hack, set
+        //corner to 0 and forget about border thickness for positioning
+        if (rFrameFormat.IsInline())
+        {
+            aRect.SetPos(Point(0,0));
+            nThick = 0;
+        }
 
-            /*
-             #i3958#
-             The inline elements being export as anchored to character inside
-             the shape field hack are required to be wrap through so as to flow
-             over the following dummy 0x01 graphic
-            */
-            if (rFrameFormat.IsInline())
-                eSurround = css::text::WrapTextMode_THROUGH;
+        // spid
+        SwWW8Writer::WriteLong(*rWrt.pTableStrm, rDrawObj.mnShapeId);
+
+        SwTwips nLeft = aRect.Left() + nThick;
+        SwTwips nRight = aRect.Right() - nThick;
+        SwTwips nTop = aRect.Top() + nThick;
+        SwTwips nBottom = aRect.Bottom() - nThick;
+
+        // tdf#93675, 0 below line/paragraph and/or top line/paragraph with
+        // wrap top+bottom or other wraps is affecting the line directly
+        // above the anchor line, which seems odd, but a tiny adjustment
+        // here to bring the top down convinces msoffice to wrap like us
+        if (nTop == 0 && !rFrameFormat.IsInline() &&
+            rVOr.GetVertOrient() == text::VertOrientation::NONE &&
+            rVOr.GetRelationOrient() == text::RelOrientation::FRAME)
+        {
+            nTop = 8;
+        }
 
-            switch (eSurround)
+        //Nasty swap for bidi if necessary
+        rWrt.MiserableRTLFrameFormatHack(nLeft, nRight, rFrameFormat);
+
+        // tdf#70838. Word relates the position to the unrotated rectangle,
+        // Writer to the rotated one. Because the rotation is around center,
+        // the difference counts half.
+        if(pObj && pObj->GetRotateAngle())
+        {
+            SwTwips nXOff;
+            SwTwips nYOff;
+            SwTwips nSnapWidth = pObj->GetSnapRect().getWidth();
+            SwTwips nSnapHeight = pObj->GetSnapRect().getHeight();
+            SwTwips nLogicWidth = pObj->GetLogicRect().getWidth();
+            SwTwips nLogicHeight = pObj->GetLogicRect().getHeight();
+            // +1 for to compensate integer arithmetic rounding errors
+            if(bHasHeightWidthSwapped)
             {
-                case css::text::WrapTextMode_NONE:
-                    nFlags |= 0x0020;
-                    break;
-                case css::text::WrapTextMode_THROUGH:
-                    nFlags |= 0x0060;
-                    break;
-                case css::text::WrapTextMode_PARALLEL:
-                    nFlags |= 0x0000 | nContour;
-                    break;
-                case css::text::WrapTextMode_DYNAMIC:
-                    nFlags |= 0x0600 | nContour;
-                    break;
-                case css::text::WrapTextMode_LEFT:
-                    nFlags |= 0x0200 | nContour;
-                    break;
-                case css::text::WrapTextMode_RIGHT:
-                    nFlags |= 0x0400 | nContour;
-                    break;
-                default:
-                    OSL_ENSURE(false, "Unsupported surround type for export");
-                    break;
+                nXOff = (nSnapWidth - nLogicHeight + 1) / 2;
+                nYOff = (nSnapHeight - nLogicWidth + 1) / 2;
             }
-            if (pObj && (pObj->GetLayer() == 
rWrt.m_pDoc->getIDocumentDrawModelAccess().GetHellId() ||
-                    pObj->GetLayer() == 
rWrt.m_pDoc->getIDocumentDrawModelAccess().GetInvisibleHellId()))
+            else
             {
-                nFlags |= 0x4000;
+                nXOff = (nSnapWidth - nLogicWidth + 1) / 2;
+                nYOff = (nSnapHeight - nLogicHeight + 1) / 2;
             }
+            nLeft += nXOff;
+            nRight += nXOff;
+            nTop += nYOff;
+            nBottom += nYOff;
+        }
 
-            /*
-             #i3958# Required to make this inline stuff work in WordXP, not
-             needed for 2003 interestingly
-             */
-            if (rFrameFormat.IsInline())
-                nFlags |= 0x8000;
+        //xaLeft/yaTop/xaRight/yaBottom - rel. to anchor
+        //(most of) the border is outside the graphic is word, so
+        //change dimensions to fit
+        SwWW8Writer::WriteLong(*rWrt.pTableStrm, nLeft);
+        SwWW8Writer::WriteLong(*rWrt.pTableStrm, nTop);
+        SwWW8Writer::WriteLong(*rWrt.pTableStrm, nRight);
+        SwWW8Writer::WriteLong(*rWrt.pTableStrm, nBottom);
+
+        //fHdr/bx/by/wr/wrk/fRcaSimple/fBelowText/fAnchorLock
+        sal_uInt16 nFlags=0;
+        //If nFlags isn't 0x14 its overridden by the escher properties
+        if (RndStdIds::FLY_AT_PAGE == rFormat.GetAnchor().GetAnchorId())
+            nFlags = 0x0000;
+        else
+            nFlags = 0x0014;        // x-rel to text,  y-rel to text
 
-            SwWW8Writer::WriteShort(*rWrt.pTableStrm, nFlags);
+        const SwFormatSurround& rSurr = rFormat.GetSurround();
+        sal_uInt16 nContour = rSurr.IsContour() ? 0x0080 : 0x0040;
+        css::text::WrapTextMode eSurround = rSurr.GetSurround();
 
-            // cTxbx
-            SwWW8Writer::WriteLong(*rWrt.pTableStrm, 0);
+        /*
+         #i3958#
+         The inline elements being export as anchored to character inside
+         the shape field hack are required to be wrap through so as to flow
+         over the following dummy 0x01 graphic
+        */
+        if (rFrameFormat.IsInline())
+            eSurround = css::text::WrapTextMode_THROUGH;
+
+        switch (eSurround)
+        {
+            case css::text::WrapTextMode_NONE:
+                nFlags |= 0x0020;
+                break;
+            case css::text::WrapTextMode_THROUGH:
+                nFlags |= 0x0060;
+                break;
+            case css::text::WrapTextMode_PARALLEL:
+                nFlags |= 0x0000 | nContour;
+                break;
+            case css::text::WrapTextMode_DYNAMIC:
+                nFlags |= 0x0600 | nContour;
+                break;
+            case css::text::WrapTextMode_LEFT:
+                nFlags |= 0x0200 | nContour;
+                break;
+            case css::text::WrapTextMode_RIGHT:
+                nFlags |= 0x0400 | nContour;
+                break;
+            default:
+                OSL_ENSURE(false, "Unsupported surround type for export");
+                break;
+        }
+        if (pObj && (pObj->GetLayer() == 
rWrt.m_pDoc->getIDocumentDrawModelAccess().GetHellId() ||
+                pObj->GetLayer() == 
rWrt.m_pDoc->getIDocumentDrawModelAccess().GetInvisibleHellId()))
+        {
+            nFlags |= 0x4000;
         }
 
-        RegisterWithFib(rFib, nFcStart, rWrt.pTableStrm->Tell() - nFcStart);
+        /*
+         #i3958# Required to make this inline stuff work in WordXP, not
+         needed for 2003 interestingly
+         */
+        if (rFrameFormat.IsInline())
+            nFlags |= 0x8000;
+
+        SwWW8Writer::WriteShort(*rWrt.pTableStrm, nFlags);
+
+        // cTxbx
+        SwWW8Writer::WriteLong(*rWrt.pTableStrm, 0);
     }
+
+    RegisterWithFib(rFib, nFcStart, rWrt.pTableStrm->Tell() - nFcStart);
 }
 
 void MainTextPlcDrawObj::RegisterWithFib(WW8Fib &rFib, sal_uInt32 nStart,
@@ -1135,62 +1135,62 @@ void MSWord_SdrAttrIter::OutAttr( sal_Int32 nSwPos )
 
     OutParaAttr(true, &aUsedRunWhichs);
 
-    if (!aTextAtrArr.empty())
-    {
-        const SwModify* pOldMod = m_rExport.m_pOutFormatNode;
-        m_rExport.m_pOutFormatNode = nullptr;
+    if (aTextAtrArr.empty())
+        return;
+
+    const SwModify* pOldMod = m_rExport.m_pOutFormatNode;
+    m_rExport.m_pOutFormatNode = nullptr;
 
-        const SfxItemPool* pSrcPool = pEditPool;
-        const SfxItemPool& rDstPool = m_rExport.m_pDoc->GetAttrPool();
+    const SfxItemPool* pSrcPool = pEditPool;
+    const SfxItemPool& rDstPool = m_rExport.m_pDoc->GetAttrPool();
 
-        nTmpSwPos = nSwPos;
-        // Did we already produce a <w:sz> element?
-        m_rExport.m_bFontSizeWritten = false;
-        for(const auto& rTextAtr : aTextAtrArr)
+    nTmpSwPos = nSwPos;
+    // Did we already produce a <w:sz> element?
+    m_rExport.m_bFontSizeWritten = false;
+    for(const auto& rTextAtr : aTextAtrArr)
+    {
+        if (nSwPos >= rTextAtr.nStart && nSwPos < rTextAtr.nEnd)
         {
-            if (nSwPos >= rTextAtr.nStart && nSwPos < rTextAtr.nEnd)
+            sal_uInt16 nWhich = rTextAtr.pAttr->Which();
+            if (nWhich == EE_FEATURE_FIELD)
             {
-                sal_uInt16 nWhich = rTextAtr.pAttr->Which();
-                if (nWhich == EE_FEATURE_FIELD)
-                {
-                    OutEEField(*(rTextAtr.pAttr));
-                    continue;
-                }
-                if (nWhich == EE_FEATURE_TAB)
-                {
-                    m_rExport.WriteChar(0x9);
-                    continue;
-                }
+                OutEEField(*(rTextAtr.pAttr));
+                continue;
+            }
+            if (nWhich == EE_FEATURE_TAB)
+            {
+                m_rExport.WriteChar(0x9);
+                continue;
+            }
 
-                const sal_uInt16 nSlotId = pSrcPool->GetSlotId(nWhich);
-                if (nSlotId && nWhich != nSlotId)
+            const sal_uInt16 nSlotId = pSrcPool->GetSlotId(nWhich);
+            if (nSlotId && nWhich != nSlotId)
+            {
+                nWhich = rDstPool.GetWhich(nSlotId);
+                if (nWhich && nWhich != nSlotId &&
+                    nWhich < RES_UNKNOWNATR_BEGIN &&
+                    m_rExport.CollapseScriptsforWordOk(nScript,nWhich))
                 {
-                    nWhich = rDstPool.GetWhich(nSlotId);
-                    if (nWhich && nWhich != nSlotId &&
-                        nWhich < RES_UNKNOWNATR_BEGIN &&
-                        m_rExport.CollapseScriptsforWordOk(nScript,nWhich))
-                    {
-                        // use always the SW-Which Id !
-                        std::unique_ptr<SfxPoolItem> 
pI(rTextAtr.pAttr->Clone());
-                        pI->SetWhich( nWhich );
-                        // Will this item produce a <w:sz> element?
-                        bool bFontSizeItem = nWhich == RES_CHRATR_FONTSIZE || 
nWhich == RES_CHRATR_CJK_FONTSIZE;
-                        if (!m_rExport.m_bFontSizeWritten || !bFontSizeItem)
-                            m_rExport.AttrOutput().OutputItem( *pI );
-                        if (bFontSizeItem)
-                            m_rExport.m_bFontSizeWritten = true;
-                    }
+                    // use always the SW-Which Id !
+                    std::unique_ptr<SfxPoolItem> pI(rTextAtr.pAttr->Clone());
+                    pI->SetWhich( nWhich );
+                    // Will this item produce a <w:sz> element?
+                    bool bFontSizeItem = nWhich == RES_CHRATR_FONTSIZE || 
nWhich == RES_CHRATR_CJK_FONTSIZE;
+                    if (!m_rExport.m_bFontSizeWritten || !bFontSizeItem)
+                        m_rExport.AttrOutput().OutputItem( *pI );
+                    if (bFontSizeItem)
+                        m_rExport.m_bFontSizeWritten = true;
                 }
             }
-
-            if( nSwPos < rTextAtr.nStart )
-                break;
         }
-        m_rExport.m_bFontSizeWritten = false;
 
-        nTmpSwPos = 0;      // HasTextItem only allowed in the above area
-        m_rExport.m_pOutFormatNode = pOldMod;
+        if( nSwPos < rTextAtr.nStart )
+            break;
     }
+    m_rExport.m_bFontSizeWritten = false;
+
+    nTmpSwPos = 0;      // HasTextItem only allowed in the above area
+    m_rExport.m_pOutFormatNode = pOldMod;
 }
 
 bool MSWord_SdrAttrIter::IsTextAttr(sal_Int32 nSwPos)
@@ -1276,40 +1276,40 @@ void MSWord_SdrAttrIter::OutParaAttr(bool bCharAttr, 
const std::set<sal_uInt16>*
 
     SetItemsThatDifferFromStandard(bCharAttr, aSet);
 
-    if (aSet.Count())
-    {
-        const SfxItemSet* pOldSet = m_rExport.GetCurItemSet();
-        m_rExport.SetCurItemSet( &aSet );
+    if (!aSet.Count())
+        return;
 
-        SfxItemIter aIter( aSet );
-        const SfxPoolItem* pItem = aIter.GetCurItem();
+    const SfxItemSet* pOldSet = m_rExport.GetCurItemSet();
+    m_rExport.SetCurItemSet( &aSet );
 
-        const SfxItemPool* pSrcPool = pEditPool,
-                         * pDstPool = &m_rExport.m_pDoc->GetAttrPool();
+    SfxItemIter aIter( aSet );
+    const SfxPoolItem* pItem = aIter.GetCurItem();
 
-        do
-        {
-            sal_uInt16 nWhich = pItem->Which();
-            if (pWhichsToIgnore && pWhichsToIgnore->find(nWhich) != 
pWhichsToIgnore->end())
-                continue;
+    const SfxItemPool* pSrcPool = pEditPool,
+                     * pDstPool = &m_rExport.m_pDoc->GetAttrPool();
 
-            sal_uInt16 nSlotId = pSrcPool->GetSlotId(nWhich);
+    do
+    {
+        sal_uInt16 nWhich = pItem->Which();
+        if (pWhichsToIgnore && pWhichsToIgnore->find(nWhich) != 
pWhichsToIgnore->end())
+            continue;
 
-            if ( nSlotId && nWhich != nSlotId &&
-                 0 != ( nWhich = pDstPool->GetWhich( nSlotId ) ) &&
-                 nWhich != nSlotId &&
-                 ( bCharAttr ? ( nWhich >= RES_CHRATR_BEGIN && nWhich < 
RES_TXTATR_END )
-                             : ( nWhich >= RES_PARATR_BEGIN && nWhich < 
RES_FRMATR_END ) ) )
-            {
-                // use always the SW-Which Id !
-                std::unique_ptr<SfxPoolItem> pI(pItem->Clone());
-                pI->SetWhich( nWhich );
-                if (m_rExport.CollapseScriptsforWordOk(nScript,nWhich))
-                    m_rExport.AttrOutput().OutputItem(*pI);
-            }
-        } while ((pItem = aIter.NextItem()));
-        m_rExport.SetCurItemSet( pOldSet );
-    }
+        sal_uInt16 nSlotId = pSrcPool->GetSlotId(nWhich);
+
+        if ( nSlotId && nWhich != nSlotId &&
+             0 != ( nWhich = pDstPool->GetWhich( nSlotId ) ) &&
+             nWhich != nSlotId &&
+             ( bCharAttr ? ( nWhich >= RES_CHRATR_BEGIN && nWhich < 
RES_TXTATR_END )
+                         : ( nWhich >= RES_PARATR_BEGIN && nWhich < 
RES_FRMATR_END ) ) )
+        {
+            // use always the SW-Which Id !
+            std::unique_ptr<SfxPoolItem> pI(pItem->Clone());
+            pI->SetWhich( nWhich );
+            if (m_rExport.CollapseScriptsforWordOk(nScript,nWhich))
+                m_rExport.AttrOutput().OutputItem(*pI);
+        }
+    } while ((pItem = aIter.NextItem()));
+    m_rExport.SetCurItemSet( pOldSet );
 }
 
 void WW8Export::WriteSdrTextObj(const SdrTextObj& rTextObj, sal_uInt8 nTyp)
@@ -1428,27 +1428,27 @@ void WinwordAnchoring::WriteData( EscherEx& rEx ) const
 {
     //Toplevel groups get their winword extra data attached, and sub elements
     //use the defaults
-    if (rEx.GetGroupLevel() <= 1)
+    if (rEx.GetGroupLevel() > 1)
+        return;
+
+    SvStream& rSt = rEx.GetStream();
+    //The last argument denotes the number of sub properties in this atom
+    if (mbInline)
     {
-        SvStream& rSt = rEx.GetStream();
-        //The last argument denotes the number of sub properties in this atom
-        if (mbInline)
-        {
-            rEx.AddAtom(18, DFF_msofbtUDefProp, 3, 3); //Prop id is 0xF122
-            rSt.WriteUInt16( 0x0390 ).WriteUInt32( 3 );
-            rSt.WriteUInt16( 0x0392 ).WriteUInt32( 3 );
-            //This sub property is required to be in the dummy inline frame as
-            //well
-            rSt.WriteUInt16( 0x053F ).WriteUInt32( nInlineHack );
-        }
-        else
-        {
-            rEx.AddAtom(24, DFF_msofbtUDefProp, 3, 4 ); //Prop id is 0xF122
-            rSt.WriteUInt16( 0x038F ).WriteUInt32( mnXAlign );
-            rSt.WriteUInt16( 0x0390 ).WriteUInt32( mnXRelTo );
-            rSt.WriteUInt16( 0x0391 ).WriteUInt32( mnYAlign );
-            rSt.WriteUInt16( 0x0392 ).WriteUInt32( mnYRelTo );
-        }
+        rEx.AddAtom(18, DFF_msofbtUDefProp, 3, 3); //Prop id is 0xF122
+        rSt.WriteUInt16( 0x0390 ).WriteUInt32( 3 );
+        rSt.WriteUInt16( 0x0392 ).WriteUInt32( 3 );
+        //This sub property is required to be in the dummy inline frame as
+        //well
+        rSt.WriteUInt16( 0x053F ).WriteUInt32( nInlineHack );
+    }
+    else
+    {
+        rEx.AddAtom(24, DFF_msofbtUDefProp, 3, 4 ); //Prop id is 0xF122
+        rSt.WriteUInt16( 0x038F ).WriteUInt32( mnXAlign );
+        rSt.WriteUInt16( 0x0390 ).WriteUInt32( mnXRelTo );
+        rSt.WriteUInt16( 0x0391 ).WriteUInt32( mnYAlign );
+        rSt.WriteUInt16( 0x0392 ).WriteUInt32( mnYRelTo );
     }
 }
 
diff --git a/sw/source/filter/ww8/wrtw8nds.cxx 
b/sw/source/filter/ww8/wrtw8nds.cxx
index 86e884fc8794..2e19f4e5bae6 100644
--- a/sw/source/filter/ww8/wrtw8nds.cxx
+++ b/sw/source/filter/ww8/wrtw8nds.cxx
@@ -555,45 +555,45 @@ void SwWW8AttrIter::OutAttr( sal_Int32 nSwPos, bool 
bWriteCombChars)
 void SwWW8AttrIter::handleToggleProperty(SfxItemSet& rExportSet, const 
SwFormatCharFormat* pCharFormatItem,
     sal_uInt16 nWhich, const SfxPoolItem* pValue)
 {
-    if (!rExportSet.HasItem(nWhich) && pValue)
-    {
-        bool hasPropertyInCharStyle = false;
-        bool hasPropertyInParaStyle = false;
+    if (!(!rExportSet.HasItem(nWhich) && pValue))
+        return;
 
-        // get bold flag from specified character style
-        if (pCharFormatItem)
+    bool hasPropertyInCharStyle = false;
+    bool hasPropertyInParaStyle = false;
+
+    // get bold flag from specified character style
+    if (pCharFormatItem)
+    {
+        if (const SwCharFormat* pCharFormat = pCharFormatItem->GetCharFormat())
         {
-            if (const SwCharFormat* pCharFormat = 
pCharFormatItem->GetCharFormat())
+            const SfxPoolItem* pItem = nullptr;
+            if (pCharFormat->GetAttrSet().HasItem(nWhich, &pItem))
             {
-                const SfxPoolItem* pItem = nullptr;
-                if (pCharFormat->GetAttrSet().HasItem(nWhich, &pItem))
-                {
-                    hasPropertyInCharStyle = (*pItem == *pValue);
-                }
+                hasPropertyInCharStyle = (*pItem == *pValue);
             }
         }
+    }
 
-        // get bold flag from specified paragraph style
+    // get bold flag from specified paragraph style
+    {
+        SwTextFormatColl& rTextColl = static_cast<SwTextFormatColl&>( 
rNd.GetAnyFormatColl() );
+        sal_uInt16 nStyle = m_rExport.m_pStyles->GetSlot( &rTextColl );
+        nStyle = ( nStyle != 0xfff ) ? nStyle : 0;
+        const SwFormat* pFormat = m_rExport.m_pStyles->GetSwFormat(nStyle);
+        if (pFormat)
         {
-            SwTextFormatColl& rTextColl = static_cast<SwTextFormatColl&>( 
rNd.GetAnyFormatColl() );
-            sal_uInt16 nStyle = m_rExport.m_pStyles->GetSlot( &rTextColl );
-            nStyle = ( nStyle != 0xfff ) ? nStyle : 0;
-            const SwFormat* pFormat = m_rExport.m_pStyles->GetSwFormat(nStyle);
-            if (pFormat)
+            const SfxPoolItem* pItem = nullptr;
+            if (pFormat->GetAttrSet().HasItem(nWhich, &pItem))
             {
-                const SfxPoolItem* pItem = nullptr;
-                if (pFormat->GetAttrSet().HasItem(nWhich, &pItem))
-                {
-                    hasPropertyInParaStyle = (*pItem == *pValue);
-                }
+                hasPropertyInParaStyle = (*pItem == *pValue);
             }
         }
+    }
 
-        // add inline property
-        if (hasPropertyInCharStyle && hasPropertyInParaStyle)
-        {
-            rExportSet.Put(*pValue);
-        }
+    // add inline property
+    if (hasPropertyInCharStyle && hasPropertyInParaStyle)
+    {
+        rExportSet.Put(*pValue);
     }
 }
 
diff --git a/sw/source/filter/ww8/wrtw8sty.cxx 
b/sw/source/filter/ww8/wrtw8sty.cxx
index 2172f2c3e54d..fc973381db09 100644
--- a/sw/source/filter/ww8/wrtw8sty.cxx
+++ b/sw/source/filter/ww8/wrtw8sty.cxx
@@ -804,19 +804,19 @@ void wwFont::WriteDocx( DocxAttributeOutput* rAttrOutput 
) const
 {
     // no font embedding, panose id, subsetting, ... implemented
 
-    if (!msFamilyNm.isEmpty())
-    {
-        rAttrOutput->StartFont( msFamilyNm );
+    if (msFamilyNm.isEmpty())
+        return;
 
-        if ( mbAlt )
-            rAttrOutput->FontAlternateName( msAltNm );
-        rAttrOutput->FontCharset( sw::ms::rtl_TextEncodingToWinCharset( 
meChrSet ), meChrSet );
-        rAttrOutput->FontFamilyType( meFamily );
-        rAttrOutput->FontPitchType( mePitch );
-        rAttrOutput->EmbedFont( msFamilyNm, meFamily, mePitch );
+    rAttrOutput->StartFont( msFamilyNm );
 
-        rAttrOutput->EndFont();
-    }
+    if ( mbAlt )
+        rAttrOutput->FontAlternateName( msAltNm );
+    rAttrOutput->FontCharset( sw::ms::rtl_TextEncodingToWinCharset( meChrSet 
), meChrSet );
+    rAttrOutput->FontFamilyType( meFamily );
+    rAttrOutput->FontPitchType( mePitch );
+    rAttrOutput->EmbedFont( msFamilyNm, meFamily, mePitch );
+
+    rAttrOutput->EndFont();
 }
 
 void wwFont::WriteRtf( const RtfAttributeOutput* rAttrOutput ) const
@@ -1478,26 +1478,26 @@ void WW8Export::SetupSectionPositions( WW8_PdAttrDesc* 
pA )
 
 void WW8AttributeOutput::TextVerticalAdjustment( const 
drawing::TextVerticalAdjust nVA )
 {
-    if ( drawing::TextVerticalAdjust_TOP != nVA ) // top alignment is the 
default
+    if ( drawing::TextVerticalAdjust_TOP == nVA ) // top alignment is the 
default
+        return;
+
+    sal_uInt8 nMSVA = 0;
+    switch( nVA )
     {
-        sal_uInt8 nMSVA = 0;
-        switch( nVA )
-        {
-            case drawing::TextVerticalAdjust_CENTER:
-                nMSVA = 1;
-                break;
-            case drawing::TextVerticalAdjust_BOTTOM:  //Writer = 2, Word = 3
-                nMSVA = 3;
-                break;
-            case drawing::TextVerticalAdjust_BLOCK:   //Writer = 3, Word = 2
-                nMSVA = 2;
-                break;
-            default:
-                break;
-        }
-        SwWW8Writer::InsUInt16( *m_rWW8Export.pO, NS_sprm::SVjc::val );
-        m_rWW8Export.pO->push_back( nMSVA );
+        case drawing::TextVerticalAdjust_CENTER:
+            nMSVA = 1;
+            break;
+        case drawing::TextVerticalAdjust_BOTTOM:  //Writer = 2, Word = 3
+            nMSVA = 3;
+            break;
+        case drawing::TextVerticalAdjust_BLOCK:   //Writer = 3, Word = 2
+            nMSVA = 2;
+            break;
+        default:
+            break;
     }
+    SwWW8Writer::InsUInt16( *m_rWW8Export.pO, NS_sprm::SVjc::val );
+    m_rWW8Export.pO->push_back( nMSVA );
 }
 
 void WW8Export::WriteHeadersFooters( sal_uInt8 nHeadFootFlags,
diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx
index 23a5b2c9822c..a0df3f50e248 100644
--- a/sw/source/filter/ww8/wrtww8.cxx
+++ b/sw/source/filter/ww8/wrtww8.cxx
@@ -1288,43 +1288,44 @@ void WW8_WrFkp::Write( SvStream& rStrm, SwWW8WrGrf& 
rGrf )
 void WW8_WrFkp::MergeToNew( short& rVarLen, sal_uInt8 *& rpNewSprms )
 {
     sal_uInt8 nStart = pOfs[ (nIMax-1) * nItemSize ];
-    if( nStart )
-    {   // has Sprms
-        sal_uInt8* p = pFkp + ( static_cast<sal_uInt16>(nStart) << 1 );
+    if( !nStart )
+        return;
 
-        // old and new equal? Then copy only one into the new sprms
-        if( nOldVarLen == rVarLen && !memcmp( p+1, rpNewSprms, nOldVarLen ))
-        {
-            sal_uInt8* pNew = new sal_uInt8[ nOldVarLen ];
-            memcpy( pNew, p+1, nOldVarLen );
-            rpNewSprms = pNew;
-        }
-        else
-        {
-            sal_uInt8* pNew = new sal_uInt8[ nOldVarLen + rVarLen ];
-            memcpy( pNew, p+1, nOldVarLen );
-            memcpy( pNew + nOldVarLen, rpNewSprms, rVarLen );
+// has Sprms
+    sal_uInt8* p = pFkp + ( static_cast<sal_uInt16>(nStart) << 1 );
 
-            rpNewSprms = pNew;
-            rVarLen = rVarLen + nOldVarLen;
-        }
-        --nIMax;
-        // if this Sprms don't used from others, remove it
-        bool bFnd = false;
-        for (sal_uInt16 n = 0; n < nIMax; ++n)
-        {
-            if (nStart == pOfs[n * nItemSize])
-            {
-                bFnd = true;
-                break;
-            }
-        }
-        if (!bFnd)
+    // old and new equal? Then copy only one into the new sprms
+    if( nOldVarLen == rVarLen && !memcmp( p+1, rpNewSprms, nOldVarLen ))
+    {
+        sal_uInt8* pNew = new sal_uInt8[ nOldVarLen ];
+        memcpy( pNew, p+1, nOldVarLen );
+        rpNewSprms = pNew;
+    }
+    else
+    {
+        sal_uInt8* pNew = new sal_uInt8[ nOldVarLen + rVarLen ];
+        memcpy( pNew, p+1, nOldVarLen );
+        memcpy( pNew + nOldVarLen, rpNewSprms, rVarLen );
+
+        rpNewSprms = pNew;
+        rVarLen = rVarLen + nOldVarLen;
+    }
+    --nIMax;
+    // if this Sprms don't used from others, remove it
+    bool bFnd = false;
+    for (sal_uInt16 n = 0; n < nIMax; ++n)
+    {
+        if (nStart == pOfs[n * nItemSize])
         {
-            nStartGrp = nOldStartGrp;
-            memset( p, 0, nOldVarLen+1 );
+            bFnd = true;
+            break;
         }
     }
+    if (!bFnd)
+    {
+        nStartGrp = nOldStartGrp;
+        memset( p, 0, nOldVarLen+1 );
+    }
 }
 
 WW8_FC WW8_WrFkp::GetStartFc() const
@@ -1438,40 +1439,40 @@ void WW8Export::AppendBookmarks( const SwTextNode& rNd, 
sal_Int32 nCurrentPos, s
     std::vector< const ::sw::mark::IMark* > aArr;
     sal_uInt16 nContent;
     const sal_Int32 nCurrentEnd = nCurrentPos + nLen;
-    if( GetWriter().GetBookmarks( rNd, nCurrentPos, nCurrentEnd, aArr ))
+    if( !GetWriter().GetBookmarks( rNd, nCurrentPos, nCurrentEnd, aArr ))
+        return;
+
+    sal_uLong nNd = rNd.GetIndex(), nSttCP = Fc2Cp( Strm().Tell() );
+    for(const ::sw::mark::IMark* p : aArr)
     {
-        sal_uLong nNd = rNd.GetIndex(), nSttCP = Fc2Cp( Strm().Tell() );
-        for(const ::sw::mark::IMark* p : aArr)
-        {
-            const ::sw::mark::IMark& rBkmk = *p;
-            if(dynamic_cast< const ::sw::mark::IFieldmark *>(&rBkmk))
-                continue;
+        const ::sw::mark::IMark& rBkmk = *p;
+        if(dynamic_cast< const ::sw::mark::IFieldmark *>(&rBkmk))
+            continue;
 
-            const SwPosition* pPos = &rBkmk.GetMarkPos();
-            const SwPosition* pOPos = nullptr;
-            if(rBkmk.IsExpanded())
-                pOPos = &rBkmk.GetOtherMarkPos();
-            if( pOPos && pOPos->nNode == pPos->nNode &&
-                pOPos->nContent < pPos->nContent )
-            {
-                pPos = pOPos;
-                pOPos = &rBkmk.GetMarkPos();
-            }
+        const SwPosition* pPos = &rBkmk.GetMarkPos();
+        const SwPosition* pOPos = nullptr;
+        if(rBkmk.IsExpanded())
+            pOPos = &rBkmk.GetOtherMarkPos();
+        if( pOPos && pOPos->nNode == pPos->nNode &&
+            pOPos->nContent < pPos->nContent )
+        {
+            pPos = pOPos;
+            pOPos = &rBkmk.GetMarkPos();
+        }
 
-            if( !pOPos || ( nNd == pPos->nNode.GetIndex() &&
-                ( nContent = pPos->nContent.GetIndex() ) >= nCurrentPos &&
-                nContent < nCurrentEnd ) )
-            {
-                sal_uLong nCp = nSttCP + pPos->nContent.GetIndex() - 
nCurrentPos;
-                m_pBkmks->Append(nCp, BookmarkToWord(rBkmk.GetName()));
-            }
-            if( pOPos && nNd == pOPos->nNode.GetIndex() &&
-                ( nContent = pOPos->nContent.GetIndex() ) >= nCurrentPos &&
-                nContent < nCurrentEnd )
-            {
-                sal_uLong nCp = nSttCP + pOPos->nContent.GetIndex() - 
nCurrentPos;
-                m_pBkmks->Append(nCp, BookmarkToWord(rBkmk.GetName()));
-            }
+        if( !pOPos || ( nNd == pPos->nNode.GetIndex() &&
+            ( nContent = pPos->nContent.GetIndex() ) >= nCurrentPos &&
+            nContent < nCurrentEnd ) )
+        {
+            sal_uLong nCp = nSttCP + pPos->nContent.GetIndex() - nCurrentPos;
+            m_pBkmks->Append(nCp, BookmarkToWord(rBkmk.GetName()));
+        }
+        if( pOPos && nNd == pOPos->nNode.GetIndex() &&
+            ( nContent = pOPos->nContent.GetIndex() ) >= nCurrentPos &&
+            nContent < nCurrentEnd )
+        {
+            sal_uLong nCp = nSttCP + pOPos->nContent.GetIndex() - nCurrentPos;
+            m_pBkmks->Append(nCp, BookmarkToWord(rBkmk.GetName()));
         }
     }
 }
@@ -1688,22 +1689,22 @@ void WW8Export::WriteAsStringTable(const 
std::vector<OUString>& rStrings,
     sal_Int32& rfcSttbf, sal_Int32& rlcbSttbf)
 {
     sal_uInt16 n, nCount = static_cast< sal_uInt16 >(rStrings.size());
-    if( nCount )
-    {
-        // we have some Redlines found in the document -> the

... etc. - the rest is truncated
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to