Kaydet (Commit) 46fa99f6 authored tarafından Eike Rathke's avatar Eike Rathke

Resolves tdf#90757 ensure start row / end row order makes sense

... in case the header is the only row.

Change-Id: I5e6046007a8d668f9834e108aaf8af0072629fc8
üst d7336b91
...@@ -1704,11 +1704,10 @@ void ScTable::Sort( ...@@ -1704,11 +1704,10 @@ void ScTable::Sort(
SCROW nLastRow = 0; SCROW nLastRow = 0;
for (SCCOL nCol = rSortParam.nCol1; nCol <= rSortParam.nCol2; nCol++) for (SCCOL nCol = rSortParam.nCol1; nCol <= rSortParam.nCol2; nCol++)
nLastRow = std::max(nLastRow, aCol[nCol].GetLastDataPos()); nLastRow = std::max(nLastRow, aCol[nCol].GetLastDataPos());
rSortParam.nRow2 = nLastRow = std::min(nLastRow, rSortParam.nRow2); rSortParam.nRow2 = nLastRow = std::max( std::min(nLastRow, rSortParam.nRow2), rSortParam.nRow1);
SCROW nRow1 = (rSortParam.bHasHeader ? SCROW nRow1 = (rSortParam.bHasHeader ? rSortParam.nRow1 + 1 : rSortParam.nRow1);
rSortParam.nRow1 + 1 : rSortParam.nRow1);
aSortParam = rSortParam; // must be assigned before calling IsSorted() aSortParam = rSortParam; // must be assigned before calling IsSorted()
if (!IsSorted(nRow1, nLastRow)) if (nRow1 < nLastRow && !IsSorted(nRow1, nLastRow))
{ {
if(pProgress) if(pProgress)
pProgress->SetState( 0, nLastRow-nRow1 ); pProgress->SetState( 0, nLastRow-nRow1 );
...@@ -1737,7 +1736,7 @@ void ScTable::Sort( ...@@ -1737,7 +1736,7 @@ void ScTable::Sort(
SCCOL nCol1 = (rSortParam.bHasHeader ? SCCOL nCol1 = (rSortParam.bHasHeader ?
rSortParam.nCol1 + 1 : rSortParam.nCol1); rSortParam.nCol1 + 1 : rSortParam.nCol1);
aSortParam = rSortParam; // must be assigned before calling IsSorted() aSortParam = rSortParam; // must be assigned before calling IsSorted()
if (!IsSorted(nCol1, nLastCol)) if (nCol1 < nLastCol && !IsSorted(nCol1, nLastCol))
{ {
if(pProgress) if(pProgress)
pProgress->SetState( 0, nLastCol-nCol1 ); pProgress->SetState( 0, nLastCol-nCol1 );
......
...@@ -569,10 +569,13 @@ bool ScDBDocFunc::Sort( SCTAB nTab, const ScSortParam& rSortParam, ...@@ -569,10 +569,13 @@ bool ScDBDocFunc::Sort( SCTAB nTab, const ScSortParam& rSortParam,
pDBData->SetSortParam(rSortParam); pDBData->SetSortParam(rSortParam);
ScRange aDirtyRange( if (nStartRow <= aLocalParam.nRow2)
aLocalParam.nCol1, nStartRow, nTab, {
aLocalParam.nCol2, aLocalParam.nRow2, nTab); ScRange aDirtyRange(
rDoc.SetDirty( aDirtyRange, true ); aLocalParam.nCol1, nStartRow, nTab,
aLocalParam.nCol2, aLocalParam.nRow2, nTab);
rDoc.SetDirty( aDirtyRange, true );
}
if (bPaint) if (bPaint)
{ {
...@@ -590,7 +593,7 @@ bool ScDBDocFunc::Sort( SCTAB nTab, const ScSortParam& rSortParam, ...@@ -590,7 +593,7 @@ bool ScDBDocFunc::Sort( SCTAB nTab, const ScSortParam& rSortParam,
rDocShell.PostPaint(ScRange(nStartX, nStartY, nTab, nEndX, nEndY, nTab), nPaint); rDocShell.PostPaint(ScRange(nStartX, nStartY, nTab, nEndX, nEndY, nTab), nPaint);
} }
if (!bUniformRowHeight) if (!bUniformRowHeight && nStartRow <= aLocalParam.nRow2)
rDocShell.AdjustRowHeight(nStartRow, aLocalParam.nRow2, nTab); rDocShell.AdjustRowHeight(nStartRow, aLocalParam.nRow2, nTab);
aModificator.SetDocumentModified(); aModificator.SetDocumentModified();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment