NFC tdf#130363 sw layout: cleanup MS Word compatibility trailing blanks

Cleaning up the code separately so my change can be better understood.

Change-Id: Ib756eb8c86f0c515056fba3e9af61cf645a19365
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151715
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx
index 895d2ab..dcb1657 100644
--- a/sw/source/core/text/inftxt.cxx
+++ b/sw/source/core/text/inftxt.cxx
@@ -1216,35 +1216,30 @@ void SwTextPaintInfo::DrawBackBrush( const SwLinePortion &rPor ) const
        {
            bool           draw = false;
            bool           full = false;
            SwLinePortion *pPos = const_cast<SwLinePortion *>(&rPor);
            const sal_Int32 nMaxLen = GetText().getLength();
            const sal_Int32 nCurrPorEnd(GetIdx() + rPor.GetLen());
            const SwLinePortion* pPos = &rPor;
            TextFrameIndex nIdx = GetIdx();
            TextFrameIndex nLen;

            do
            {
                nLen = pPos->GetLen();
                for (TextFrameIndex i = nIdx; i < (nIdx + nLen); ++i)
                const sal_Int32 nEndPos = std::min(sal_Int32(nIdx + pPos->GetLen()), nMaxLen);
                for (sal_Int32 i = sal_Int32(nIdx); i < nEndPos; ++i)
                {
                    if (i < TextFrameIndex(GetText().getLength())
                        && GetText()[sal_Int32(i)] == CH_TXTATR_NEWLINE)
                    {
                        if ( i >= (GetIdx() + rPor.GetLen()) )
                        {
                            goto drawcontinue;
                        }
                    }
                    if (i >= TextFrameIndex(GetText().getLength())
                        || GetText()[sal_Int32(i)] != CH_BLANK)
                    if (i < nMaxLen && i >= nCurrPorEnd && GetText()[i] == CH_TXTATR_NEWLINE)
                        goto drawcontinue;

                    if (i == nMaxLen || GetText()[i] != CH_BLANK)
                    {
                        draw = true;
                        if ( i >= (GetIdx() + rPor.GetLen()) )
                        if (i >= nCurrPorEnd)
                        {
                            full = true;
                            goto drawcontinue;
                        }
                    }
                }
                nIdx += nLen;
                nIdx += pPos->GetLen();
                pPos = pPos->GetNextPortion();
            } while ( pPos );

@@ -1255,36 +1250,25 @@ void SwTextPaintInfo::DrawBackBrush( const SwLinePortion &rPor ) const

            if ( !full )
            {
                pPos = const_cast<SwLinePortion *>(&rPor);
                nIdx = GetIdx();

                nLen = pPos->GetLen();
                for (TextFrameIndex i = nIdx + nLen - TextFrameIndex(1);
                        i >= nIdx; --i)
                const sal_Int32 nLastPos = std::min(nCurrPorEnd, nMaxLen) - 1;
                for (sal_Int32 i = nLastPos; TextFrameIndex(i) >= GetIdx(); --i)
                {
                    if (i < TextFrameIndex(GetText().getLength())
                        && GetText()[sal_Int32(i)] == CH_TXTATR_NEWLINE)
                    {
                    if (GetText()[i] == CH_TXTATR_NEWLINE)
                        continue;
                    }
                    if ((i + TextFrameIndex(1) ).get() > GetText().getLength())
                        // prevent crash by not passing bad data down to GetTextSize->SwDrawTextInfo
                        SAL_WARN("sw", "something dodgy, clamping text index to prevent crash");
                    else if (i >= TextFrameIndex(GetText().getLength())
                        || GetText()[sal_Int32(i)] != CH_BLANK)

                    if (GetText()[i] != CH_BLANK)
                    {
                        sal_uInt16 nOldWidth = rPor.Width();
                        sal_uInt16 nNewWidth = GetTextSize(m_pOut, nullptr,
                            GetText(), nIdx, (i + TextFrameIndex(1) - nIdx)).Width();
                        const sal_uInt16 nOldWidth = rPor.Width();
                        const sal_uInt16 nNewWidth
                            = GetTextSize(m_pOut, nullptr, GetText(), GetIdx(),
                                          TextFrameIndex(i + 1) - GetIdx()).Width();

                        const_cast<SwLinePortion&>(rPor).Width( nNewWidth );
                        CalcRect( rPor, nullptr, &aIntersect, true );
                        const_cast<SwLinePortion&>(rPor).Width( nOldWidth );

                        if ( !aIntersect.HasArea() )
                        {
                            return;
                        }

                        break;
                    }