[Libreoffice-commits] core.git: sc/inc sc/source

Noel Grandin noel.grandin at collabora.co.uk
Wed Sep 13 06:49:33 UTC 2017


 sc/inc/attarray.hxx                      |   15 +-
 sc/source/core/data/attarray.cxx         |  220 +++++++++++++++----------------
 sc/source/core/data/dociter.cxx          |    2 
 sc/source/core/data/document.cxx         |    4 
 sc/source/core/data/fillinfo.cxx         |    2 
 sc/source/filter/excel/xistyle.cxx       |   10 -
 sc/source/filter/oox/sheetdatabuffer.cxx |    4 
 sc/source/filter/oox/stylesbuffer.cxx    |    6 
 8 files changed, 132 insertions(+), 131 deletions(-)

New commits:
commit cd779b5f4e457678bd306ee2c873aac7f0e058c4
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Tue Sep 12 15:56:21 2017 +0200

    rename ScAttrEntry.nRow to nEndRow
    
    since it's the last row that the pattern applies to
    
    Change-Id: I80d6d5787768b1e98e958d7adc4c13c37c560ccd
    Reviewed-on: https://gerrit.libreoffice.org/42211
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/sc/inc/attarray.hxx b/sc/inc/attarray.hxx
index e6767a32a8dd..aa5d8ad91e61 100644
--- a/sc/inc/attarray.hxx
+++ b/sc/inc/attarray.hxx
@@ -75,9 +75,10 @@ struct ScMergePatternState
                         mbValidPatternId(true), mnPatternId(0) {}
 };
 
+// we store an array of these where the pattern applies to all rows up till nEndRow
 struct ScAttrEntry
 {
-    SCROW                   nRow;
+    SCROW                   nEndRow;
     const ScPatternAttr*    pPattern;
 };
 
@@ -267,7 +268,7 @@ inline const ScPatternAttr* ScAttrIterator::Next( SCROW& rTop, SCROW& rBottom )
     if ( nPos < pArray->nCount && nRow <= nEndRow )
     {
         rTop = nRow;
-        rBottom = std::min( pArray->pData[nPos].nRow, nEndRow );
+        rBottom = std::min( pArray->pData[nPos].nEndRow, nEndRow );
         pRet = pArray->pData[nPos].pPattern;
         nRow = rBottom + 1;
         ++nPos;
@@ -289,13 +290,13 @@ inline const ScPatternAttr* ScAttrIterator::Resync( SCROW nRowP, SCROW& rTop, SC
     // starting right there. Assume that Next() was called so nPos already
     // advanced. Another high chance is that the change extended a previous or
     // next pattern. In all these cases we don't need to search.
-    if (3 <= nPos && nPos <= pArray->nCount && pArray->pData[nPos-3].nRow < nRowP &&
-            nRowP <= pArray->pData[nPos-2].nRow)
+    if (3 <= nPos && nPos <= pArray->nCount && pArray->pData[nPos-3].nEndRow < nRowP &&
+            nRowP <= pArray->pData[nPos-2].nEndRow)
         nPos -= 2;
-    else if (2 <= nPos && nPos <= pArray->nCount && pArray->pData[nPos-2].nRow < nRowP &&
-            nRowP <= pArray->pData[nPos-1].nRow)
+    else if (2 <= nPos && nPos <= pArray->nCount && pArray->pData[nPos-2].nEndRow < nRowP &&
+            nRowP <= pArray->pData[nPos-1].nEndRow)
         --nPos;
-    else if (pArray->nCount > 0 && nRowP <= pArray->pData[0].nRow)
+    else if (pArray->nCount > 0 && nRowP <= pArray->pData[0].nEndRow)
         nPos = 0;
     else
         pArray->Search( nRowP, nPos );
diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx
index 5b1dab939ffc..8596b7481f58 100644
--- a/sc/source/core/data/attarray.cxx
+++ b/sc/source/core/data/attarray.cxx
@@ -70,15 +70,15 @@ ScAttrArray::ScAttrArray( SCCOL nNewCol, SCTAB nNewTab, ScDocument* pDoc, ScAttr
             pData.reset( new ScAttrEntry[nCount] );
             for ( size_t nIdx = 0; nIdx < nCount; ++nIdx )
             {
-                pData[nIdx].nRow = pDefaultColAttrArray->pData[nIdx].nRow;
+                pData[nIdx].nEndRow = pDefaultColAttrArray->pData[nIdx].nEndRow;
                 ScPatternAttr aNewPattern( *(pDefaultColAttrArray->pData[nIdx].pPattern) );
                 pData[nIdx].pPattern = static_cast<const ScPatternAttr*>( &pDocument->GetPool()->Put( aNewPattern ) );
                 bNumFormatChanged = false;
                 if ( ScGlobal::CheckWidthInvalidate( bNumFormatChanged,
                      pData[nIdx].pPattern->GetItemSet(), pDocument->GetDefPattern()->GetItemSet() ) )
                 {
-                    aAdrStart.SetRow( nIdx ? pData[nIdx-1].nRow+1 : 0 );
-                    aAdrEnd.SetRow( pData[nIdx].nRow );
+                    aAdrStart.SetRow( nIdx ? pData[nIdx-1].nEndRow+1 : 0 );
+                    aAdrEnd.SetRow( pData[nIdx].nEndRow );
                     pDocument->InvalidateTextWidth( &aAdrStart, &aAdrEnd, bNumFormatChanged );
                 }
             }
@@ -125,7 +125,7 @@ void ScAttrArray::SetDefaultIfNotInit( SCSIZE nNeeded )
 
     SCSIZE nNewLimit = ( SC_ATTRARRAY_DELTA > nNeeded ) ? SC_ATTRARRAY_DELTA : nNeeded;
     pData.reset( new ScAttrEntry[nNewLimit] );
-    pData[0].nRow = MAXROW;
+    pData[0].nEndRow = MAXROW;
     pData[0].pPattern = pDocument->GetDefPattern(); // no put
     nCount = 1;
     nLimit = nNewLimit;
@@ -147,8 +147,8 @@ void ScAttrArray::Reset( const ScPatternAttr* pPattern )
             if ( ScGlobal::CheckWidthInvalidate( bNumFormatChanged,
                         pPattern->GetItemSet(), pOldPattern->GetItemSet() ) )
             {
-                aAdrStart.SetRow( i ? pData[i-1].nRow+1 : 0 );
-                aAdrEnd  .SetRow( pData[i].nRow );
+                aAdrStart.SetRow( i ? pData[i-1].nEndRow+1 : 0 );
+                aAdrEnd  .SetRow( pData[i].nEndRow );
                 pDocument->InvalidateTextWidth( &aAdrStart, &aAdrEnd, bNumFormatChanged );
             }
         }
@@ -162,7 +162,7 @@ void ScAttrArray::Reset( const ScPatternAttr* pPattern )
     nCount = nLimit = 1;
     pData.reset( new ScAttrEntry[1] );
     const ScPatternAttr* pNewPattern = static_cast<const ScPatternAttr*>( &pDocPool->Put(*pPattern) );
-    pData[0].nRow = MAXROW;
+    pData[0].nEndRow = MAXROW;
     pData[0].pPattern = pNewPattern;
 }
 
@@ -175,11 +175,11 @@ bool ScAttrArray::Concat(SCSIZE nPos)
         {
             if (pData[nPos - 1].pPattern == pData[nPos].pPattern)
             {
-                pData[nPos - 1].nRow = pData[nPos].nRow;
+                pData[nPos - 1].nEndRow = pData[nPos].nEndRow;
                 pDocument->GetPool()->Remove(*pData[nPos].pPattern);
                 memmove(&pData[nPos], &pData[nPos + 1], (nCount - nPos - 1) * sizeof(ScAttrEntry));
                 pData[nCount - 1].pPattern = nullptr;
-                pData[nCount - 1].nRow = 0;
+                pData[nCount - 1].nEndRow = 0;
                 nCount--;
                 nPos--;
                 bRet = true;
@@ -189,11 +189,11 @@ bool ScAttrArray::Concat(SCSIZE nPos)
         {
             if (pData[nPos + 1].pPattern == pData[nPos].pPattern)
             {
-                pData[nPos].nRow = pData[nPos + 1].nRow;
+                pData[nPos].nEndRow = pData[nPos + 1].nEndRow;
                 pDocument->GetPool()->Remove(*pData[nPos].pPattern);
                 memmove(&pData[nPos + 1], &pData[nPos + 2], (nCount - nPos - 2) * sizeof(ScAttrEntry));
                 pData[nCount - 1].pPattern = nullptr;
-                pData[nCount - 1].nRow = 0;
+                pData[nCount - 1].nEndRow = 0;
                 nCount--;
                 bRet = true;
             }
@@ -220,10 +220,10 @@ bool ScAttrArray::Search( SCROW nRow, SCSIZE& nIndex ) const
     {
         i = (nLo + nHi) / 2;
         if (i > 0)
-            nStartRow = (long) pData[i - 1].nRow;
+            nStartRow = (long) pData[i - 1].nEndRow;
         else
             nStartRow = -1;
-        const long nEndRow = (long) pData[i].nRow;
+        const long nEndRow = (long) pData[i].nEndRow;
         if (nEndRow < (long) nRow)
             nLo = ++i;
         else
@@ -270,10 +270,10 @@ const ScPatternAttr* ScAttrArray::GetPatternRange( SCROW& rStartRow,
     if ( Search( nRow, nIndex ) )
     {
         if ( nIndex > 0 )
-            rStartRow = pData[nIndex-1].nRow + 1;
+            rStartRow = pData[nIndex-1].nEndRow + 1;
         else
             rStartRow = 0;
-        rEndRow = pData[nIndex].nRow;
+        rEndRow = pData[nIndex].nEndRow;
         return pData[nIndex].pPattern;
     }
     return nullptr;
@@ -424,7 +424,7 @@ bool ScAttrArray::Reserve( SCSIZE nReserve )
             nLimit = nReserve;
             nCount = 1;
             pData.reset( pNewData );
-            pData[0].nRow = MAXROW;
+            pData[0].nEndRow = MAXROW;
             pData[0].pPattern = pDocument->GetDefPattern(); // no put
             return true;
         }
@@ -487,7 +487,7 @@ void ScAttrArray::SetPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPattern
                 if ( ni > 0 )
                 {
                     nx = ni;
-                    ns = pData[ni-1].nRow+1;
+                    ns = pData[ni-1].nEndRow+1;
                 }
             }
 
@@ -504,11 +504,11 @@ void ScAttrArray::SetPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPattern
                             rNewSet, rOldSet ) )
                     {
                         aAdrStart.SetRow( std::max(nStartRow,ns) );
-                        aAdrEnd  .SetRow( std::min(nEndRow,pData[nx].nRow) );
+                        aAdrEnd  .SetRow( std::min(nEndRow,pData[nx].nEndRow) );
                         pDocument->InvalidateTextWidth( &aAdrStart, &aAdrEnd, bNumFormatChanged );
                     }
                 }
-                ns = pData[nx].nRow + 1;
+                ns = pData[nx].nEndRow + 1;
                 nx++;
             }
 
@@ -522,20 +522,20 @@ void ScAttrArray::SetPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPattern
                 nInsert = MAXROWCOUNT;
                 if ( pData[ni].pPattern != pPattern )
                 {
-                    if ( ni == 0 || (pData[ni-1].nRow < nStartRow - 1) )
+                    if ( ni == 0 || (pData[ni-1].nEndRow < nStartRow - 1) )
                     {   // may be a split or a simple insert or just a shrink,
                         // row adjustment is done further down
-                        if ( pData[ni].nRow > nEndRow )
+                        if ( pData[ni].nEndRow > nEndRow )
                             bSplit = true;
                         ni++;
                         nInsert = ni;
                     }
-                    else if ( ni > 0 && pData[ni-1].nRow == nStartRow - 1 )
+                    else if ( ni > 0 && pData[ni-1].nEndRow == nStartRow - 1 )
                         nInsert = ni;
                 }
                 if ( ni > 0 && pData[ni-1].pPattern == pPattern )
                 {   // combine
-                    pData[ni-1].nRow = nEndRow;
+                    pData[ni-1].nEndRow = nEndRow;
                     nInsert = MAXROWCOUNT;
                     bCombined = true;
                 }
@@ -544,7 +544,7 @@ void ScAttrArray::SetPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPattern
                 nInsert = 0;
 
             SCSIZE nj = ni;     // stop position of range to replace
-            while ( nj < nCount && pData[nj].nRow <= nEndRow )
+            while ( nj < nCount && pData[nj].nEndRow <= nEndRow )
                 nj++;
             if ( !bSplit )
             {
@@ -554,17 +554,17 @@ void ScAttrArray::SetPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPattern
                     {
                         if ( pData[ni-1].pPattern == pPattern )
                         {   // adjacent entries
-                            pData[ni-1].nRow = pData[nj].nRow;
+                            pData[ni-1].nEndRow = pData[nj].nEndRow;
                             nj++;
                         }
                         else if ( ni == nInsert )
-                            pData[ni-1].nRow = nStartRow - 1;   // shrink
+                            pData[ni-1].nEndRow = nStartRow - 1;   // shrink
                     }
                     nInsert = MAXROWCOUNT;
                     bCombined = true;
                 }
                 else if ( ni > 0 && ni == nInsert )
-                    pData[ni-1].nRow = nStartRow - 1;   // shrink
+                    pData[ni-1].nEndRow = nStartRow - 1;   // shrink
             }
             ScDocumentPool* pDocPool = pDocument->GetPool();
             if ( bSplit )
@@ -579,7 +579,7 @@ void ScAttrArray::SetPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPattern
                 }
                 if ( !bCombined )
                 {   // replace one entry
-                    pData[ni].nRow = nEndRow;
+                    pData[ni].nEndRow = nEndRow;
                     pData[ni].pPattern = pPattern;
                     ni++;
                     nInsert = MAXROWCOUNT;
@@ -607,8 +607,8 @@ void ScAttrArray::SetPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPattern
                     }
                 }
                 if ( nInsert )
-                    pData[nInsert-1].nRow = nStartRow - 1;
-                pData[nInsert].nRow = nEndRow;
+                    pData[nInsert-1].nEndRow = nStartRow - 1;
+                pData[nInsert].nEndRow = nEndRow;
                 pData[nInsert].pPattern = pPattern;
 
                 // Remove character attributes from these cells if the pattern
@@ -651,8 +651,8 @@ void ScAttrArray::ApplyStyleArea( SCROW nStartRow, SCROW nEndRow, ScStyleSheet*
             std::unique_ptr<ScPatternAttr> pNewPattern(new ScPatternAttr(*pOldPattern));
             pNewPattern->SetStyleSheet(pStyle);
             SCROW nY1 = nStart;
-            SCROW nY2 = pData[nPos].nRow;
-            nStart = pData[nPos].nRow + 1;
+            SCROW nY2 = pData[nPos].nEndRow;
+            nStart = pData[nPos].nEndRow + 1;
 
             if ( *pNewPattern == *pOldPattern )
             {
@@ -680,8 +680,8 @@ void ScAttrArray::ApplyStyleArea( SCROW nStartRow, SCROW nEndRow, ScStyleSheet*
                     if ( ScGlobal::CheckWidthInvalidate( bNumFormatChanged,
                             rNewSet, rOldSet ) )
                     {
-                        aAdrStart.SetRow( nPos ? pData[nPos-1].nRow+1 : 0 );
-                        aAdrEnd  .SetRow( pData[nPos].nRow );
+                        aAdrStart.SetRow( nPos ? pData[nPos-1].nEndRow+1 : 0 );
+                        aAdrEnd  .SetRow( pData[nPos].nEndRow );
                         pDocument->InvalidateTextWidth( &aAdrStart, &aAdrEnd, bNumFormatChanged );
                     }
                 }
@@ -754,7 +754,7 @@ void ScAttrArray::ApplyLineStyleArea( SCROW nStartRow, SCROW nEndRow,
                 std::unique_ptr<ScPatternAttr> pNewPattern(new ScPatternAttr(*pOldPattern));
                 SfxItemSet&     rNewSet = pNewPattern->GetItemSet();
                 SCROW           nY1 = nStart;
-                SCROW           nY2 = pData[nPos].nRow;
+                SCROW           nY2 = pData[nPos].nEndRow;
 
                 SvxBoxItem*     pNewBoxItem = pBoxItem ? static_cast<SvxBoxItem*>(pBoxItem->Clone()) : nullptr;
                 SvxLineItem*    pNewTLBRItem = pTLBRItem ? static_cast<SvxLineItem*>(pTLBRItem->Clone()) : nullptr;
@@ -812,7 +812,7 @@ void ScAttrArray::ApplyLineStyleArea( SCROW nStartRow, SCROW nEndRow,
                 if( pNewTLBRItem )  rNewSet.Put( *pNewTLBRItem );
                 if( pNewBLTRItem )  rNewSet.Put( *pNewBLTRItem );
 
-                nStart = pData[nPos].nRow + 1;
+                nStart = pData[nPos].nEndRow + 1;
 
                 if ( nY1 < nStartRow || nY2 > nEndRow )
                 {
@@ -839,7 +839,7 @@ void ScAttrArray::ApplyLineStyleArea( SCROW nStartRow, SCROW nEndRow,
             }
             else
             {
-                nStart = pData[nPos].nRow + 1;
+                nStart = pData[nPos].nEndRow + 1;
                 nPos++;
             }
         }
@@ -877,8 +877,8 @@ void ScAttrArray::ApplyCacheArea( SCROW nStartRow, SCROW nEndRow, SfxItemPoolCac
             if (pNewPattern != pOldPattern)
             {
                 SCROW nY1 = nStart;
-                SCROW nY2 = pData[nPos].nRow;
-                nStart = pData[nPos].nRow + 1;
+                SCROW nY2 = pData[nPos].nEndRow;
+                nStart = pData[nPos].nEndRow + 1;
 
                 if(pIsChanged)
                     *pIsChanged = true;
@@ -903,8 +903,8 @@ void ScAttrArray::ApplyCacheArea( SCROW nStartRow, SCROW nEndRow, SfxItemPoolCac
                         if ( ScGlobal::CheckWidthInvalidate( bNumFormatChanged,
                                 rNewSet, rOldSet ) )
                         {
-                            aAdrStart.SetRow( nPos ? pData[nPos-1].nRow+1 : 0 );
-                            aAdrEnd  .SetRow( pData[nPos].nRow );
+                            aAdrStart.SetRow( nPos ? pData[nPos-1].nEndRow+1 : 0 );
+                            aAdrEnd  .SetRow( pData[nPos].nEndRow );
                             pDocument->InvalidateTextWidth( &aAdrStart, &aAdrEnd, bNumFormatChanged );
                         }
                     }
@@ -919,7 +919,7 @@ void ScAttrArray::ApplyCacheArea( SCROW nStartRow, SCROW nEndRow, SfxItemPoolCac
             }
             else
             {
-                nStart = pData[nPos].nRow + 1;
+                nStart = pData[nPos].nEndRow + 1;
                 ++nPos;
             }
         }
@@ -1025,7 +1025,7 @@ void ScAttrArray::MergePatternArea( SCROW nStartRow, SCROW nEndRow,
             }
 
             if ( pData )
-                nStart = pData[nPos].nRow + 1;
+                nStart = pData[nPos].nEndRow + 1;
             else
                 nStart = MAXROW + 1;
             ++nPos;
@@ -1155,7 +1155,7 @@ void ScAttrArray::MergeBlockFrame( SvxBoxItem* pLineOuter, SvxBoxInfoItem* pLine
         {
             pPattern = pData[i].pPattern;
             lcl_MergeToFrame( pLineOuter, pLineInner, rFlags, pPattern, bLeft, nDistRight, false,
-                            nEndRow - std::min( pData[i].nRow, (SCROW)(nEndRow-1) ) );
+                            nEndRow - std::min( pData[i].nEndRow, (SCROW)(nEndRow-1) ) );
             // nDistBottom here always > 0
         }
 
@@ -1262,7 +1262,7 @@ void ScAttrArray::ApplyBlockFrame(const SvxBoxItem& rLineOuter, const SvxBoxInfo
             SCROW nTmpEnd;
             for (SCSIZE i=nStartIndex; i<=nEndIndex;)
             {
-                nTmpEnd = std::min( (SCROW)(nEndRow-1), pData[i].nRow );
+                nTmpEnd = std::min( (SCROW)(nEndRow-1), pData[i].nEndRow );
                 bool bChanged = ApplyFrame(&rLineOuter, pLineInner, nTmpStart, nTmpEnd,
                                            bLeft, nDistRight, false, nEndRow - nTmpEnd);
                 nTmpStart = nTmpEnd+1;
@@ -1338,8 +1338,8 @@ bool ScAttrArray::HasAttrib_Impl(const ScPatternAttr* pPattern, HasAttrFlags nMa
             !static_cast<const ScCondFormatItem&>(pPattern->GetItem( ATTR_CONDITIONAL )).GetCondFormatData().empty();
         if ( bContainsCondFormat && nCol != -1 ) // pDocument->GetCondResult() is valid only for real columns.
         {
-            SCROW nRowStartCond = std::max<SCROW>( nRow1, i ? pData[i-1].nRow + 1: 0 );
-            SCROW nRowEndCond = std::min<SCROW>( nRow2, pData[i].nRow );
+            SCROW nRowStartCond = std::max<SCROW>( nRow1, i ? pData[i-1].nEndRow + 1: 0 );
+            SCROW nRowEndCond = std::min<SCROW>( nRow2, pData[i].nEndRow );
             bool bFoundCond = false;
             for(SCROW nRowCond = nRowStartCond; nRowCond <= nRowEndCond && !bFoundCond; ++nRowCond)
             {
@@ -1484,7 +1484,7 @@ bool ScAttrArray::ExtendMerge( SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow,
         SCROW  nCountY = pItem->GetRowMerge();
         if (nCountX>1 || nCountY>1)
         {
-            SCROW nThisRow = (i>0) ? pData[i-1].nRow+1 : 0;
+            SCROW nThisRow = (i>0) ? pData[i-1].nEndRow+1 : 0;
             SCCOL nMergeEndCol = nThisCol + nCountX - 1;
             SCROW nMergeEndRow = nThisRow + nCountY - 1;
             if (nMergeEndCol > rPaintCol && nMergeEndCol <= MAXCOL)
@@ -1496,7 +1496,7 @@ bool ScAttrArray::ExtendMerge( SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow,
             if (bRefresh)
             {
                 if ( nMergeEndCol > nThisCol )
-                    pDocument->ApplyFlagsTab( nThisCol+1, nThisRow, nMergeEndCol, pData[i].nRow,
+                    pDocument->ApplyFlagsTab( nThisCol+1, nThisRow, nMergeEndCol, pData[i].nEndRow,
                                 nTab, ScMF::Hor );
                 if ( nMergeEndRow > nThisRow )
                     pDocument->ApplyFlagsTab( nThisCol, nThisRow+1, nThisCol, nMergeEndRow,
@@ -1524,13 +1524,13 @@ void ScAttrArray::RemoveAreaMerge(SCROW nStartRow, SCROW nEndRow)
     SCSIZE nIndex;
 
     Search( nStartRow, nIndex );
-    SCROW nThisStart = (nIndex>0) ? pData[nIndex-1].nRow+1 : 0;
+    SCROW nThisStart = (nIndex>0) ? pData[nIndex-1].nEndRow+1 : 0;
     if (nThisStart < nStartRow)
         nThisStart = nStartRow;
 
     while ( nThisStart <= nEndRow )
     {
-        SCROW nThisEnd = pData[nIndex].nRow;
+        SCROW nThisEnd = pData[nIndex].nEndRow;
         if (nThisEnd > nEndRow)
             nThisEnd = nEndRow;
 
@@ -1567,7 +1567,7 @@ void ScAttrArray::RemoveAreaMerge(SCROW nStartRow, SCROW nEndRow)
 
         ++nIndex;
         if ( nIndex < nCount )
-            nThisStart = pData[nIndex-1].nRow+1;
+            nThisStart = pData[nIndex-1].nEndRow+1;
         else
             nThisStart = MAXROW+1;   // End
     }
@@ -1586,14 +1586,14 @@ void ScAttrArray::SetPatternAreaSafe( SCROW nStartRow, SCROW nEndRow,
     bool    bFirstUse = true;
 
     Search( nStartRow, nIndex );
-    nThisRow = (nIndex>0) ? pData[nIndex-1].nRow+1 : 0;
+    nThisRow = (nIndex>0) ? pData[nIndex-1].nEndRow+1 : 0;
     while ( nThisRow <= nEndRow )
     {
         pOldPattern = pData[nIndex].pPattern;
         if (pOldPattern != pWantedPattern) // FIXME: else-branch?
         {
             if (nThisRow < nStartRow) nThisRow = nStartRow;
-            nRow = pData[nIndex].nRow;
+            nRow = pData[nIndex].nEndRow;
             SCROW nAttrRow = std::min( nRow, nEndRow );
             pItem = static_cast<const ScMergeFlagAttr*>( &pOldPattern->GetItem( ATTR_MERGE_FLAG ) );
 
@@ -1625,7 +1625,7 @@ void ScAttrArray::SetPatternAreaSafe( SCROW nStartRow, SCROW nEndRow,
         }
 
         ++nIndex;
-        nThisRow = pData[nIndex-1].nRow+1;
+        nThisRow = pData[nIndex-1].nEndRow+1;
     }
 }
 
@@ -1641,7 +1641,7 @@ bool ScAttrArray::ApplyFlags( SCROW nStartRow, SCROW nEndRow, ScMF nFlags )
     bool    bChanged = false;
 
     Search( nStartRow, nIndex );
-    nThisRow = (nIndex>0) ? pData[nIndex-1].nRow+1 : 0;
+    nThisRow = (nIndex>0) ? pData[nIndex-1].nEndRow+1 : 0;
     if (nThisRow < nStartRow) nThisRow = nStartRow;
 
     while ( nThisRow <= nEndRow )
@@ -1650,7 +1650,7 @@ bool ScAttrArray::ApplyFlags( SCROW nStartRow, SCROW nEndRow, ScMF nFlags )
         nOldValue = static_cast<const ScMergeFlagAttr*>( &pOldPattern->GetItem( ATTR_MERGE_FLAG ))->GetValue();
         if ( (nOldValue | nFlags) != nOldValue )
         {
-            nRow = pData[nIndex].nRow;
+            nRow = pData[nIndex].nEndRow;
             SCROW nAttrRow = std::min( nRow, nEndRow );
             ScPatternAttr aNewPattern(*pOldPattern);
             aNewPattern.GetItemSet().Put( ScMergeFlagAttr( nOldValue | nFlags ) );
@@ -1660,7 +1660,7 @@ bool ScAttrArray::ApplyFlags( SCROW nStartRow, SCROW nEndRow, ScMF nFlags )
         }
 
         ++nIndex;
-        nThisRow = pData[nIndex-1].nRow+1;
+        nThisRow = pData[nIndex-1].nEndRow+1;
     }
 
     return bChanged;
@@ -1678,7 +1678,7 @@ bool ScAttrArray::RemoveFlags( SCROW nStartRow, SCROW nEndRow, ScMF nFlags )
     bool    bChanged = false;
 
     Search( nStartRow, nIndex );
-    nThisRow = (nIndex>0) ? pData[nIndex-1].nRow+1 : 0;
+    nThisRow = (nIndex>0) ? pData[nIndex-1].nEndRow+1 : 0;
     if (nThisRow < nStartRow) nThisRow = nStartRow;
 
     while ( nThisRow <= nEndRow )
@@ -1687,7 +1687,7 @@ bool ScAttrArray::RemoveFlags( SCROW nStartRow, SCROW nEndRow, ScMF nFlags )
         nOldValue = static_cast<const ScMergeFlagAttr*>(&pOldPattern->GetItem( ATTR_MERGE_FLAG ))->GetValue();
         if ( (nOldValue & ~nFlags) != nOldValue )
         {
-            nRow = pData[nIndex].nRow;
+            nRow = pData[nIndex].nEndRow;
             SCROW nAttrRow = std::min( nRow, nEndRow );
             ScPatternAttr aNewPattern(*pOldPattern);
             aNewPattern.GetItemSet().Put( ScMergeFlagAttr( nOldValue & ~nFlags ) );
@@ -1697,7 +1697,7 @@ bool ScAttrArray::RemoveFlags( SCROW nStartRow, SCROW nEndRow, ScMF nFlags )
         }
 
         ++nIndex;
-        nThisRow = pData[nIndex-1].nRow+1;
+        nThisRow = pData[nIndex-1].nEndRow+1;
     }
 
     return bChanged;
@@ -1711,7 +1711,7 @@ void ScAttrArray::ClearItems( SCROW nStartRow, SCROW nEndRow, const sal_uInt16*
     SCROW   nThisRow;
 
     Search( nStartRow, nIndex );
-    nThisRow = (nIndex>0) ? pData[nIndex-1].nRow+1 : 0;
+    nThisRow = (nIndex>0) ? pData[nIndex-1].nEndRow+1 : 0;
     if (nThisRow < nStartRow) nThisRow = nStartRow;
 
     while ( nThisRow <= nEndRow )
@@ -1722,14 +1722,14 @@ void ScAttrArray::ClearItems( SCROW nStartRow, SCROW nEndRow, const sal_uInt16*
             ScPatternAttr aNewPattern(*pOldPattern);
             aNewPattern.ClearItems( pWhich );
 
-            nRow = pData[nIndex].nRow;
+            nRow = pData[nIndex].nEndRow;
             SCROW nAttrRow = std::min( nRow, nEndRow );
             SetPatternArea( nThisRow, nAttrRow, &aNewPattern, true );
             Search( nThisRow, nIndex );  // data changed
         }
 
         ++nIndex;
-        nThisRow = pData[nIndex-1].nRow+1;
+        nThisRow = pData[nIndex-1].nEndRow+1;
     }
 }
 
@@ -1738,7 +1738,7 @@ void ScAttrArray::ChangeIndent( SCROW nStartRow, SCROW nEndRow, bool bIncrement
     SetDefaultIfNotInit();
     SCSIZE nIndex;
     Search( nStartRow, nIndex );
-    SCROW nThisStart = (nIndex>0) ? pData[nIndex-1].nRow+1 : 0;
+    SCROW nThisStart = (nIndex>0) ? pData[nIndex-1].nEndRow+1 : 0;
     if (nThisStart < nStartRow) nThisStart = nStartRow;
 
     while ( nThisStart <= nEndRow )
@@ -1775,7 +1775,7 @@ void ScAttrArray::ChangeIndent( SCROW nStartRow, SCROW nEndRow, bool bIncrement
 
         if ( bNeedJust || nNewValue != nOldValue )
         {
-            SCROW nThisEnd = pData[nIndex].nRow;
+            SCROW nThisEnd = pData[nIndex].nEndRow;
             SCROW nAttrRow = std::min( nThisEnd, nEndRow );
             ScPatternAttr aNewPattern(*pOldPattern);
             aNewPattern.GetItemSet().Put( SfxUInt16Item( ATTR_INDENT, nNewValue ) );
@@ -1789,7 +1789,7 @@ void ScAttrArray::ChangeIndent( SCROW nStartRow, SCROW nEndRow, bool bIncrement
         }
         else
         {
-            nThisStart = pData[nIndex].nRow + 1;
+            nThisStart = pData[nIndex].nEndRow + 1;
             ++nIndex;
         }
     }
@@ -1818,11 +1818,11 @@ SCROW ScAttrArray::GetNextUnprotected( SCROW nRow, bool bUp ) const
                 if (nIndex==0)
                     return -1;   // not found
                 --nIndex;
-                nRet = pData[nIndex].nRow;
+                nRet = pData[nIndex].nEndRow;
             }
             else
             {
-                nRet = pData[nIndex].nRow+1;
+                nRet = pData[nIndex].nEndRow+1;
                 ++nIndex;
                 if (nIndex>=nCount)
                     return MAXROW+1; // not found
@@ -1839,7 +1839,7 @@ void ScAttrArray::FindStyleSheet( const SfxStyleSheetBase* pStyleSheet, ScFlatBo
     SCSIZE nPos = 0;
     while (nPos < nCount)
     {
-        SCROW nEnd = pData[nPos].nRow;
+        SCROW nEnd = pData[nPos].nEndRow;
         if (pData[nPos].pPattern->GetStyleSheet() == pStyleSheet)
         {
             rUsedRows.setTrue(nStart, nEnd);
@@ -1932,14 +1932,14 @@ bool ScAttrArray::GetFirstVisibleAttr( SCROW& rFirstRow ) const
     SCSIZE nVisStart = 1;
     while ( nVisStart < nCount && pData[nVisStart].pPattern->IsVisibleEqual(*pData[nVisStart-1].pPattern) )
         ++nVisStart;
-    if ( nVisStart >= nCount || pData[nVisStart-1].nRow > 0 )   // more than 1 row?
+    if ( nVisStart >= nCount || pData[nVisStart-1].nEndRow > 0 )   // more than 1 row?
         nStart = nVisStart;
 
     while ( nStart < nCount && !bFound )
     {
         if ( pData[nStart].pPattern->IsVisible() )
         {
-            rFirstRow = nStart ? ( pData[nStart-1].nRow + 1 ) : 0;
+            rFirstRow = nStart ? ( pData[nStart-1].nEndRow + 1 ) : 0;
             bFound = true;
         }
         else
@@ -1977,7 +1977,7 @@ bool ScAttrArray::GetLastVisibleAttr( SCROW& rLastRow, SCROW nLastData ) const
     // Quick check: last data row in or immediately preceding a run that is the
     // last attribution down to the end, e.g. default style or column style.
     SCSIZE nPos = nCount - 1;
-    SCROW nStartRow = (nPos ? pData[nPos-1].nRow + 1 : 0);
+    SCROW nStartRow = (nPos ? pData[nPos-1].nEndRow + 1 : 0);
     if (nStartRow <= nLastData + 1)
     {
         // Ignore here a few rows if data happens to end within
@@ -1996,15 +1996,15 @@ bool ScAttrArray::GetLastVisibleAttr( SCROW& rLastRow, SCROW nLastData ) const
         while ( nEndPos < nCount-1 &&
                 pData[nEndPos].pPattern->IsVisibleEqual( *pData[nEndPos+1].pPattern))
             ++nEndPos;
-        SCROW nAttrStartRow = ( nPos > 0 ) ? ( pData[nPos-1].nRow + 1 ) : 0;
+        SCROW nAttrStartRow = ( nPos > 0 ) ? ( pData[nPos-1].nEndRow + 1 ) : 0;
         if ( nAttrStartRow <= nLastData )
             nAttrStartRow = nLastData + 1;
-        SCROW nAttrSize = pData[nEndPos].nRow + 1 - nAttrStartRow;
+        SCROW nAttrSize = pData[nEndPos].nEndRow + 1 - nAttrStartRow;
         if ( nAttrSize >= SC_VISATTR_STOP )
             break;  // while, ignore this range and below
         else if ( pData[nEndPos].pPattern->IsVisible() )
         {
-            rLastRow = pData[nEndPos].nRow;
+            rLastRow = pData[nEndPos].nEndRow;
             bFound = true;
         }
         nPos = nEndPos + 1;
@@ -2027,7 +2027,7 @@ bool ScAttrArray::HasVisibleAttrIn( SCROW nStartRow, SCROW nEndRow ) const
         if ( pData[nIndex].pPattern->IsVisible() )
             bFound = true;
 
-        nThisStart = pData[nIndex].nRow + 1;
+        nThisStart = pData[nIndex].nEndRow + 1;
         ++nIndex;
     }
 
@@ -2074,7 +2074,7 @@ bool ScAttrArray::IsVisibleEqual( const ScAttrArray& rOther,
                 bEqual = ( pNonDefPattern == pDefPattern ||
                            pNonDefPattern->IsVisibleEqual( *pDefPattern ) );
 
-                if ( pNonDefault->pData[nPos].nRow >= nEndRow ) break;
+                if ( pNonDefault->pData[nPos].nEndRow >= nEndRow ) break;
                 ++nPos;
             }
             return bEqual;
@@ -2092,8 +2092,8 @@ bool ScAttrArray::IsVisibleEqual( const ScAttrArray& rOther,
 
     while ( nThisPos<nCount && nOtherPos<rOther.nCount && bEqual )
     {
-        SCROW nThisRow = pData[nThisPos].nRow;
-        SCROW nOtherRow = rOther.pData[nOtherPos].nRow;
+        SCROW nThisRow = pData[nThisPos].nEndRow;
+        SCROW nOtherRow = rOther.pData[nOtherPos].nEndRow;
         const ScPatternAttr* pThisPattern = pData[nThisPos].pPattern;
         const ScPatternAttr* pOtherPattern = rOther.pData[nOtherPos].pPattern;
         bEqual = ( pThisPattern == pOtherPattern ||
@@ -2153,7 +2153,7 @@ bool ScAttrArray::IsAllEqual( const ScAttrArray& rOther, SCROW nStartRow, SCROW
                 const ScPatternAttr* pNonDefPattern = pNonDefault->pData[nPos].pPattern;
                 bEqual = ( pNonDefPattern == pDefPattern );
 
-                if ( pNonDefault->pData[nPos].nRow >= nEndRow ) break;
+                if ( pNonDefault->pData[nPos].nEndRow >= nEndRow ) break;
                 ++nPos;
             }
             return bEqual;
@@ -2171,8 +2171,8 @@ bool ScAttrArray::IsAllEqual( const ScAttrArray& rOther, SCROW nStartRow, SCROW
 
     while ( nThisPos<nCount && nOtherPos<rOther.nCount && bEqual )
     {
-        SCROW nThisRow = pData[nThisPos].nRow;
-        SCROW nOtherRow = rOther.pData[nOtherPos].nRow;
+        SCROW nThisRow = pData[nThisPos].nEndRow;
+        SCROW nOtherRow = rOther.pData[nOtherPos].nEndRow;
         const ScPatternAttr* pThisPattern = pData[nThisPos].pPattern;
         const ScPatternAttr* pOtherPattern = rOther.pData[nOtherPos].pPattern;
         bEqual = ( pThisPattern == pOtherPattern );
@@ -2212,7 +2212,7 @@ bool ScAttrArray::TestInsertCol( SCROW nStartRow, SCROW nEndRow) const
                 bTest = false;  // may not be pushed out
                 break;
             }
-            if ( pData[nIndex].nRow >= nEndRow ) // end of range
+            if ( pData[nIndex].nEndRow >= nEndRow ) // end of range
                 break;
         }
     }
@@ -2230,7 +2230,7 @@ bool ScAttrArray::TestInsertRow( SCSIZE nSize ) const
                        GetItem(ATTR_MERGE_FLAG)).IsVerOverlapped();
 
     SCSIZE nFirstLost = nCount-1;
-    while ( nFirstLost && pData[nFirstLost-1].nRow >= sal::static_int_cast<SCROW>(MAXROW + 1 - nSize) )
+    while ( nFirstLost && pData[nFirstLost-1].nEndRow >= sal::static_int_cast<SCROW>(MAXROW + 1 - nSize) )
         --nFirstLost;
 
     return !static_cast<const ScMergeFlagAttr&>(pData[nFirstLost].pPattern->
@@ -2257,14 +2257,14 @@ void ScAttrArray::InsertRow( SCROW nStartRow, SCSIZE nSize )
     SCSIZE i;
     for (i = nIndex; i < nCount-1; i++)
     {
-        SCROW nNew = pData[i].nRow + nSize;
+        SCROW nNew = pData[i].nEndRow + nSize;
         if ( nNew >= MAXROW )    // at end?
         {
             nNew = MAXROW;
             if (!nRemove)
                 nRemove = i+1;  // remove the following?
         }
-        pData[i].nRow = nNew;
+        pData[i].nEndRow = nNew;
     }
 
     // Remove entries at end ?
@@ -2297,7 +2297,7 @@ void ScAttrArray::DeleteRow( SCROW nStartRow, SCSIZE nSize )
     SCSIZE i;
 
     for ( i = 0; i < nCount-1; i++)
-        if (pData[i].nRow >= nStartRow && pData[i].nRow <= sal::static_int_cast<SCROW>(nStartRow+nSize-1))
+        if (pData[i].nEndRow >= nStartRow && pData[i].nEndRow <= sal::static_int_cast<SCROW>(nStartRow+nSize-1))
         {
             if (bFirst)
             {
@@ -2312,11 +2312,11 @@ void ScAttrArray::DeleteRow( SCROW nStartRow, SCSIZE nSize )
         if (nStartIndex==0)
             nStart = 0;
         else
-            nStart = pData[nStartIndex-1].nRow + 1;
+            nStart = pData[nStartIndex-1].nEndRow + 1;
 
         if (nStart < nStartRow)
         {
-            pData[nStartIndex].nRow = nStartRow - 1;
+            pData[nStartIndex].nEndRow = nStartRow - 1;
             ++nStartIndex;
         }
         if (nEndIndex >= nStartIndex)
@@ -2328,8 +2328,8 @@ void ScAttrArray::DeleteRow( SCROW nStartRow, SCSIZE nSize )
         }
     }
     for (i = 0; i < nCount-1; i++)
-        if (pData[i].nRow >= nStartRow)
-            pData[i].nRow -= nSize;
+        if (pData[i].nEndRow >= nStartRow)
+            pData[i].nEndRow -= nSize;
 
     // Below does not follow the pattern to detect pressure ranges;
     // instead, only remove merge flags.
@@ -2369,7 +2369,7 @@ void ScAttrArray::DeleteHardAttr(SCROW nStartRow, SCROW nEndRow)
     SCROW   nThisRow;
 
     Search( nStartRow, nIndex );
-    nThisRow = (nIndex>0) ? pData[nIndex-1].nRow+1 : 0;
+    nThisRow = (nIndex>0) ? pData[nIndex-1].nEndRow+1 : 0;
     if (nThisRow < nStartRow) nThisRow = nStartRow;
 
     while ( nThisRow <= nEndRow )
@@ -2378,7 +2378,7 @@ void ScAttrArray::DeleteHardAttr(SCROW nStartRow, SCROW nEndRow)
 
         if ( pOldPattern->GetItemSet().Count() )  // hard attributes ?
         {
-            nRow = pData[nIndex].nRow;
+            nRow = pData[nIndex].nEndRow;
             SCROW nAttrRow = std::min( nRow, nEndRow );
 
             ScPatternAttr aNewPattern(*pOldPattern);
@@ -2396,7 +2396,7 @@ void ScAttrArray::DeleteHardAttr(SCROW nStartRow, SCROW nEndRow)
         }
 
         ++nIndex;
-        nThisRow = pData[nIndex-1].nRow+1;
+        nThisRow = pData[nIndex-1].nEndRow+1;
     }
 }
 
@@ -2409,13 +2409,13 @@ void ScAttrArray::MoveTo(SCROW nStartRow, SCROW nEndRow, ScAttrArray& rAttrArray
     SCROW nStart = nStartRow;
     for (SCSIZE i = 0; i < nCount; i++)
     {
-        if ((pData[i].nRow >= nStartRow) && (i == 0 || pData[i-1].nRow < nEndRow))
+        if ((pData[i].nEndRow >= nStartRow) && (i == 0 || pData[i-1].nEndRow < nEndRow))
         {
             // copy (bPutToPool=TRUE)
-            rAttrArray.SetPatternArea( nStart, std::min( pData[i].nRow, nEndRow ),
+            rAttrArray.SetPatternArea( nStart, std::min( pData[i].nEndRow, nEndRow ),
                                         pData[i].pPattern, true );
         }
-        nStart = std::max( nStart, pData[i].nRow + 1 );
+        nStart = std::max( nStart, pData[i].nEndRow + 1 );
     }
     DeleteArea(nStartRow, nEndRow);
 }
@@ -2446,7 +2446,7 @@ void ScAttrArray::CopyArea(
 
     for (SCSIZE i = 0; (i < nCount) && (nDestStart <= nDestEnd); i++)
     {
-        if (pData[i].nRow >= nStartRow)
+        if (pData[i].nEndRow >= nStartRow)
         {
             const ScPatternAttr* pOldPattern = pData[i].pPattern;
             const ScPatternAttr* pNewPattern;
@@ -2485,12 +2485,12 @@ void ScAttrArray::CopyArea(
             }
 
             rAttrArray.SetPatternArea(nDestStart,
-                            std::min((SCROW)(pData[i].nRow + nDy), nDestEnd), pNewPattern);
+                            std::min((SCROW)(pData[i].nEndRow + nDy), nDestEnd), pNewPattern);
         }
 
         // when pasting from clipboard and skipping filtered rows, the adjusted
         // end position can be negative
-        nDestStart = std::max((long)nDestStart, (long)(pData[i].nRow + nDy + 1));
+        nDestStart = std::max((long)nDestStart, (long)(pData[i].nEndRow + nDy + 1));
     }
 }
 
@@ -2532,7 +2532,7 @@ void ScAttrArray::CopyAreaSafe( SCROW nStartRow, SCROW nEndRow, long nDy, ScAttr
 
     for (SCSIZE i = 0; (i < nCount) && (nDestStart <= nDestEnd); i++)
     {
-        if (pData[i].nRow >= nStartRow)
+        if (pData[i].nEndRow >= nStartRow)
         {
             const ScPatternAttr* pOldPattern = pData[i].pPattern;
             const ScPatternAttr* pNewPattern;
@@ -2543,12 +2543,12 @@ void ScAttrArray::CopyAreaSafe( SCROW nStartRow, SCROW nEndRow, long nDy, ScAttr
                 pNewPattern = pOldPattern->PutInPool( rAttrArray.pDocument, pDocument );
 
             rAttrArray.SetPatternAreaSafe(nDestStart,
-                            std::min((SCROW)(pData[i].nRow + nDy), nDestEnd), pNewPattern, false);
+                            std::min((SCROW)(pData[i].nEndRow + nDy), nDestEnd), pNewPattern, false);
         }
 
         // when pasting from clipboard and skipping filtered rows, the adjusted
         // end position can be negative
-        nDestStart = std::max((long)nDestStart, (long)(pData[i].nRow + nDy + 1));
+        nDestStart = std::max((long)nDestStart, (long)(pData[i].nEndRow + nDy + 1));
     }
 }
 
@@ -2585,8 +2585,8 @@ SCROW ScAttrArray::SearchStyle(
             if (pMarkArray)
             {
                 nRow = pMarkArray->GetNextMarked( nRow, bUp );
-                SCROW nStart = nIndex ? pData[nIndex-1].nRow+1 : 0;
-                if (nRow >= nStart && nRow <= pData[nIndex].nRow)
+                SCROW nStart = nIndex ? pData[nIndex-1].nEndRow+1 : 0;
+                if (nRow >= nStart && nRow <= pData[nIndex].nEndRow)
                     bFound = true;
             }
             else
@@ -2605,13 +2605,13 @@ SCROW ScAttrArray::SearchStyle(
                 else
                 {
                     --nIndex;
-                    nRow = pData[nIndex].nRow;
+                    nRow = pData[nIndex].nEndRow;
                     pPattern = pData[nIndex].pPattern;
                 }
             }
             else
             {
-                nRow = pData[nIndex].nRow+1;
+                nRow = pData[nIndex].nEndRow+1;
                 ++nIndex;
                 if (nIndex<nCount)
                     pPattern = pData[nIndex].pPattern;
@@ -2665,7 +2665,7 @@ bool ScAttrArray::SearchStyleRange(
         if (bUp)
         {
             if (nIndex>0)
-                rEndRow = pData[nIndex-1].nRow + 1;
+                rEndRow = pData[nIndex-1].nEndRow + 1;
             else
                 rEndRow = 0;
             if (pMarkArray)
@@ -2677,7 +2677,7 @@ bool ScAttrArray::SearchStyleRange(
         }
         else
         {
-            rEndRow = pData[nIndex].nRow;
+            rEndRow = pData[nIndex].nEndRow;
             if (pMarkArray)
             {
                 SCROW nMarkEnd = pMarkArray->GetMarkEnd( nStartRow, false );
diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx
index 274081beaf73..1ed1c2a4903e 100644
--- a/sc/source/core/data/dociter.cxx
+++ b/sc/source/core/data/dociter.cxx
@@ -2306,7 +2306,7 @@ void ScHorizontalAttrIterator::InitForNextRow(bool bInitialization)
             else if ( nIndex < pArray->nCount )
             {
                 const ScPatternAttr* pPattern = pArray->pData[nIndex].pPattern;
-                SCROW nThisEnd = pArray->pData[nIndex].nRow;
+                SCROW nThisEnd = pArray->pData[nIndex].nEndRow;
 
                 if ( IsDefaultItem( pPattern ) )
                     pPattern = nullptr;
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index c59cc614b7bc..ad5ce06fca47 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -5437,7 +5437,7 @@ void ScDocument::ExtendOverlapped( SCCOL& rStartCol, SCROW& rStartRow,
                                                                          GetItem(ATTR_MERGE_FLAG)).IsHorOverlapped();
                 if ( bHorOverlapped )
                 {
-                    SCROW nEndRowSeg = (pAttrArray->nCount) ? pAttrArray->pData[nIndex].nRow : MAXROW;
+                    SCROW nEndRowSeg = (pAttrArray->nCount) ? pAttrArray->pData[nIndex].nEndRow : MAXROW;
                     SCROW nLoopEndRow = std::min( nEndRow, nEndRowSeg );
                     for (SCROW nAttrRow = nAttrPos; nAttrRow <= nLoopEndRow; nAttrRow++)
                     {
@@ -5452,7 +5452,7 @@ void ScDocument::ExtendOverlapped( SCCOL& rStartCol, SCROW& rStartRow,
                 }
                 if ( pAttrArray->nCount )
                 {
-                    nAttrPos = pAttrArray->pData[nIndex].nRow + 1;
+                    nAttrPos = pAttrArray->pData[nIndex].nEndRow + 1;
                     ++nIndex;
                 }
                 else
diff --git a/sc/source/core/data/fillinfo.cxx b/sc/source/core/data/fillinfo.cxx
index ecbc104a2253..de39ce735f57 100644
--- a/sc/source/core/data/fillinfo.cxx
+++ b/sc/source/core/data/fillinfo.cxx
@@ -491,7 +491,7 @@ void ScDocument::FillInfo(
                         const ScPatternAttr* pPattern = nullptr;
                         if ( pThisAttrArr->nCount )
                         {
-                            nThisRow = pThisAttrArr->pData[nIndex].nRow;              // End of range
+                            nThisRow = pThisAttrArr->pData[nIndex].nEndRow;              // End of range
                             pPattern = pThisAttrArr->pData[nIndex].pPattern;
                         }
                         else
diff --git a/sc/source/filter/excel/xistyle.cxx b/sc/source/filter/excel/xistyle.cxx
index d29ab77e0ce5..6a28a863ad61 100644
--- a/sc/source/filter/excel/xistyle.cxx
+++ b/sc/source/filter/excel/xistyle.cxx
@@ -1376,20 +1376,20 @@ void XclImpXF::ApplyPatternToAttrList(
             // First attribute range doesn't start at row 0.
             bHasGap = true;
 
-        if (!rAttrs.empty() && rAttrs.back().nRow + 1 < nRow1)
+        if (!rAttrs.empty() && rAttrs.back().nEndRow + 1 < nRow1)
             bHasGap = true;
 
         if (bHasGap)
         {
             // Fill this gap with the default pattern.
             ScAttrEntry aEntry;
-            aEntry.nRow = nRow1 - 1;
+            aEntry.nEndRow = nRow1 - 1;
             aEntry.pPattern = rDoc.GetDefPattern();
             rAttrs.push_back(aEntry);
         }
 
         ScAttrEntry aEntry;
-        aEntry.nRow = nRow2;
+        aEntry.nEndRow = nRow2;
         aEntry.pPattern = static_cast<const ScPatternAttr*>(&rDoc.GetPool()->Put(rPat));
         rAttrs.push_back(aEntry);
     }
@@ -2004,10 +2004,10 @@ void XclImpXFRangeBuffer::Finalize()
                 pXF->ApplyPatternToAttrList(aAttrs, rStyle.mnScRow1, rStyle.mnScRow2, nForceScNumFmt);
             }
 
-            if (aAttrs.empty() || aAttrs.back().nRow != MAXROW)
+            if (aAttrs.empty() || aAttrs.back().nEndRow != MAXROW)
             {
                 ScAttrEntry aEntry;
-                aEntry.nRow = MAXROW;
+                aEntry.nEndRow = MAXROW;
                 aEntry.pPattern = rDoc.getDoc().GetDefPattern();
                 aAttrs.push_back(aEntry);
             }
diff --git a/sc/source/filter/oox/sheetdatabuffer.cxx b/sc/source/filter/oox/sheetdatabuffer.cxx
index 4dba319eee72..ea5406bc1bf3 100644
--- a/sc/source/filter/oox/sheetdatabuffer.cxx
+++ b/sc/source/filter/oox/sheetdatabuffer.cxx
@@ -472,10 +472,10 @@ void SheetDataBuffer::finalizeImport()
              if ( pXf )
                  pXf->applyPatternToAttrList( aAttrs,  rRows->mnStartRow,  rRows->mnEndRow,  rRows->mnNumFmt.second );
         }
-        if (aAttrs.maAttrs.empty() || aAttrs.maAttrs.back().nRow != MAXROW)
+        if (aAttrs.maAttrs.empty() || aAttrs.maAttrs.back().nEndRow != MAXROW)
         {
             ScAttrEntry aEntry;
-            aEntry.nRow = MAXROW;
+            aEntry.nEndRow = MAXROW;
             aEntry.pPattern = pDefPattern;
             rDoc.getDoc().GetPool()->Put(*aEntry.pPattern);
             aAttrs.maAttrs.push_back(aEntry);
diff --git a/sc/source/filter/oox/stylesbuffer.cxx b/sc/source/filter/oox/stylesbuffer.cxx
index 779b470d878c..70a2519ff0bc 100644
--- a/sc/source/filter/oox/stylesbuffer.cxx
+++ b/sc/source/filter/oox/stylesbuffer.cxx
@@ -2051,14 +2051,14 @@ void Xf::applyPatternToAttrList( AttrList& rAttrs, SCROW nRow1, SCROW nRow2, sal
             // First attribute range doesn't start at row 0.
             bHasGap = true;
 
-        if (!rAttrs.maAttrs.empty() && rAttrs.maAttrs.back().nRow + 1 < nRow1)
+        if (!rAttrs.maAttrs.empty() && rAttrs.maAttrs.back().nEndRow + 1 < nRow1)
             bHasGap = true;
 
         if (bHasGap)
         {
             // Fill this gap with the default pattern.
             ScAttrEntry aEntry;
-            aEntry.nRow = nRow1 - 1;
+            aEntry.nEndRow = nRow1 - 1;
             aEntry.pPattern = static_cast<const ScPatternAttr*>(&rDoc.GetPool()->Put(*rAttrs.mpDefPattern));
             rAttrs.maAttrs.push_back(aEntry);
 
@@ -2068,7 +2068,7 @@ void Xf::applyPatternToAttrList( AttrList& rAttrs, SCROW nRow1, SCROW nRow2, sal
         }
 
         ScAttrEntry aEntry;
-        aEntry.nRow = nRow2;
+        aEntry.nEndRow = nRow2;
         aEntry.pPattern = static_cast<const ScPatternAttr*>(&rDoc.GetPool()->Put(rPat));
         rAttrs.maAttrs.push_back(aEntry);
 


More information about the Libreoffice-commits mailing list