ignore hidden row/columns when navigating, fdo#45020

Change-Id: I597d7dbef07479f66894c7fce5ee21f340b43120
This commit is contained in:
Markus Mohrhard
2013-09-27 17:28:47 +02:00
parent 690228ad4d
commit 93d22efb33

View File

@@ -79,18 +79,38 @@ void moveCursorByProtRule(
{ {
for (SCCOL i = 0; i < nMovX && rCol < MAXCOL; ++i) for (SCCOL i = 0; i < nMovX && rCol < MAXCOL; ++i)
{ {
if (!isCellQualified(pDoc, rCol+1, rRow, nTab, bSelectLocked, bSelectUnlocked)) SCCOL nNewUnhiddenCol = rCol + 1;
SCCOL nEndCol = 0;
while(pDoc->ColHidden(nNewUnhiddenCol, nTab, NULL, &nEndCol))
{
if(nNewUnhiddenCol >= MAXCOL)
return;
nNewUnhiddenCol = nEndCol +1;
}
if (!isCellQualified(pDoc, nNewUnhiddenCol, rRow, nTab, bSelectLocked, bSelectUnlocked))
break; break;
++rCol; rCol = nNewUnhiddenCol;
} }
} }
else if (nMovX < 0) else if (nMovX < 0)
{ {
for (SCCOL i = 0; i > nMovX && rCol > 0; --i) for (SCCOL i = 0; i > nMovX && rCol > 0; --i)
{ {
if (!isCellQualified(pDoc, rCol-1, rRow, nTab, bSelectLocked, bSelectUnlocked)) SCCOL nNewUnhiddenCol = rCol - 1;
SCCOL nStartCol = 0;
while(pDoc->ColHidden(nNewUnhiddenCol, nTab, &nStartCol))
{
if(nNewUnhiddenCol <= 0)
return;
nNewUnhiddenCol = nStartCol - 1;
}
if (!isCellQualified(pDoc, nNewUnhiddenCol, rRow, nTab, bSelectLocked, bSelectUnlocked))
break; break;
--rCol; rCol = nNewUnhiddenCol;
} }
} }
@@ -98,18 +118,38 @@ void moveCursorByProtRule(
{ {
for (SCROW i = 0; i < nMovY && rRow < MAXROW; ++i) for (SCROW i = 0; i < nMovY && rRow < MAXROW; ++i)
{ {
if (!isCellQualified(pDoc, rCol, rRow+1, nTab, bSelectLocked, bSelectUnlocked)) SCROW nNewUnhiddenRow = rRow + 1;
SCROW nEndRow = 0;
while(pDoc->RowHidden(nNewUnhiddenRow, nTab, NULL, &nEndRow))
{
if(nNewUnhiddenRow >= MAXROW)
return;
nNewUnhiddenRow = nEndRow + 1;
}
if (!isCellQualified(pDoc, rCol, nNewUnhiddenRow, nTab, bSelectLocked, bSelectUnlocked))
break; break;
++rRow; rRow = nNewUnhiddenRow;
} }
} }
else if (nMovY < 0) else if (nMovY < 0)
{ {
for (SCROW i = 0; i > nMovY && rRow > 0; --i) for (SCROW i = 0; i > nMovY && rRow > 0; --i)
{ {
if (!isCellQualified(pDoc, rCol, rRow-1, nTab, bSelectLocked, bSelectUnlocked)) SCROW nNewUnhiddenRow = rRow - 1;
SCROW nStartRow = 0;
while(pDoc->RowHidden(nNewUnhiddenRow, nTab, &nStartRow))
{
if(nNewUnhiddenRow <= 0)
return;
nNewUnhiddenRow = nStartRow - 1;
}
if (!isCellQualified(pDoc, rCol, nNewUnhiddenRow, nTab, bSelectLocked, bSelectUnlocked))
break; break;
--rRow; rRow = nNewUnhiddenRow;
} }
} }
} }