sc/source/core/data/table1.cxx |   11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

New commits:
commit 637f7b50e4e8fbb56b4c552e28058bbdfcf85d5a
Author: Dennis Francis <dennisfrancis...@gmail.com>
Date:   Fri Jun 9 14:46:58 2017 +0530

    tdf#50916 : Refactor table1.cxx ScTable::GetNext*() methods
    
    Refactored ScTable::GetNextPos() and ScTable::GetNextMarkedCell()
    methods in table1.cxx for dynamic column container.
    
    Change-Id: I5dfe9e5b2236e6ede68119f4e1252610990e498b
    Reviewed-on: https://gerrit.libreoffice.org/38599
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Eike Rathke <er...@redhat.com>

diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx
index bbb6d610a5ce..45f17c663b51 100644
--- a/sc/source/core/data/table1.cxx
+++ b/sc/source/core/data/table1.cxx
@@ -1401,6 +1401,7 @@ void ScTable::GetNextPos( SCCOL& rCol, SCROW& rRow, SCCOL 
nMovX, SCROW nMovY,
         {
             std::unique_ptr<SCROW[]> pNextRows(new SCROW[MAXCOL+1]);
             SCCOL i;
+            const SCCOL nLastCol = aCol.size() - 1;
 
             if ( nMovX > 0 )                            //  forward
             {
@@ -1412,7 +1413,8 @@ void ScTable::GetNextPos( SCCOL& rCol, SCROW& rRow, SCCOL 
nMovX, SCROW nMovY,
                     if ( bMarked )
                         nNextRow = rMark.GetNextMarked( nCol, nNextRow, false 
);
                     if ( bUnprotected )
-                        nNextRow = aCol[nCol].GetNextUnprotected( nNextRow, 
false );
+                        nNextRow = ( nCol <= nLastCol ) ? 
aCol[nCol].GetNextUnprotected( nNextRow, false ) :
+                            aDefaultColAttrArray.GetNextUnprotected( nNextRow, 
false );
                     pNextRows[nCol] = nNextRow;
 
                     SCROW nMinRow = MAXROW+1;
@@ -1445,7 +1447,8 @@ void ScTable::GetNextPos( SCCOL& rCol, SCROW& rRow, SCCOL 
nMovX, SCROW nMovY,
                     if ( bMarked )
                         nNextRow = rMark.GetNextMarked( nCol, nNextRow, true );
                     if ( bUnprotected )
-                        nNextRow = aCol[nCol].GetNextUnprotected( nNextRow, 
true );
+                        nNextRow = ( nCol <= nLastCol ) ? 
aCol[nCol].GetNextUnprotected( nNextRow, true ) :
+                            aDefaultColAttrArray.GetNextUnprotected( nNextRow, 
true );
                     pNextRows[nCol] = nNextRow;
 
                     SCROW nMaxRow = -1;
@@ -1485,7 +1488,7 @@ bool ScTable::GetNextMarkedCell( SCCOL& rCol, SCROW& 
rRow, const ScMarkData& rMa
 {
     ++rRow;                 // next row
 
-    while ( rCol <= MAXCOL )
+    while ( rCol < aCol.size() )
     {
         ScMarkArray aArray( rMark.GetMarkArray( rCol ) );
         while ( rRow <= MAXROW )
@@ -1528,6 +1531,8 @@ bool ScTable::GetNextMarkedCell( SCCOL& rCol, SCROW& 
rRow, const ScMarkData& rMa
         ++rCol;                                 // test next column
     }
 
+    // Though searched only the allocated columns, it is equivalent to a 
search till MAXCOL.
+    rCol = MAXCOL + 1;
     return false;                               // Through all columns
 }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to