Kaydet (Commit) c10928e7 authored tarafından Noel Grandin's avatar Noel Grandin

tdf#117706 Multi-select copying rows between sheets broken

regression from

   commit 6529cd54
   don't use heap for elements in ScRangeList

where I converted some loop variables from pointers to refs, forgetting
to assigning to a ref is quite different from assigning to a pointer

Change-Id: I4a365006317d16a24cbb1b43994906a0d4b4d424
Reviewed-on: https://gerrit.libreoffice.org/54756Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst b4960947
...@@ -3126,22 +3126,22 @@ void ScDocument::GetClipArea(SCCOL& nClipX, SCROW& nClipY, bool bIncludeFiltered ...@@ -3126,22 +3126,22 @@ void ScDocument::GetClipArea(SCCOL& nClipX, SCROW& nClipY, bool bIncludeFiltered
// No clip range. Bail out. // No clip range. Bail out.
return; return;
ScRange & rRange = rClipRanges.front(); ScRange const & rRange = rClipRanges.front();
SCCOL nStartCol = rRange.aStart.Col(); SCCOL nStartCol = rRange.aStart.Col();
SCCOL nEndCol = rRange.aEnd.Col(); SCCOL nEndCol = rRange.aEnd.Col();
SCROW nStartRow = rRange.aStart.Row(); SCROW nStartRow = rRange.aStart.Row();
SCROW nEndRow = rRange.aEnd.Row(); SCROW nEndRow = rRange.aEnd.Row();
for ( size_t i = 1, n = rClipRanges.size(); i < n; ++i ) for ( size_t i = 1, n = rClipRanges.size(); i < n; ++i )
{ {
rRange = rClipRanges[ i ]; ScRange const rRange2 = rClipRanges[ i ];
if (rRange.aStart.Col() < nStartCol) if (rRange2.aStart.Col() < nStartCol)
nStartCol = rRange.aStart.Col(); nStartCol = rRange2.aStart.Col();
if (rRange.aStart.Row() < nStartRow) if (rRange2.aStart.Row() < nStartRow)
nStartRow = rRange.aStart.Row(); nStartRow = rRange2.aStart.Row();
if (rRange.aEnd.Col() > nEndCol) if (rRange2.aEnd.Col() > nEndCol)
nEndCol = rRange.aEnd.Col(); nEndCol = rRange2.aEnd.Col();
if (rRange.aEnd.Row() < nEndRow) if (rRange2.aEnd.Row() < nEndRow)
nEndRow = rRange.aEnd.Row(); nEndRow = rRange2.aEnd.Row();
} }
nClipX = nEndCol - nStartCol; nClipX = nEndCol - nStartCol;
......
...@@ -306,26 +306,26 @@ bool ScViewFunc::CopyToClip( ScDocument* pClipDoc, const ScRangeList& rRanges, b ...@@ -306,26 +306,26 @@ bool ScViewFunc::CopyToClip( ScDocument* pClipDoc, const ScRangeList& rRanges, b
// Check for geometrical feasibility of the ranges. // Check for geometrical feasibility of the ranges.
bool bValidRanges = true; bool bValidRanges = true;
ScRange & r = aClipParam.maRanges.front(); ScRange const * p = &aClipParam.maRanges.front();
SCCOL nPrevColDelta = 0; SCCOL nPrevColDelta = 0;
SCROW nPrevRowDelta = 0; SCROW nPrevRowDelta = 0;
SCCOL nPrevCol = r.aStart.Col(); SCCOL nPrevCol = p->aStart.Col();
SCROW nPrevRow = r.aStart.Row(); SCROW nPrevRow = p->aStart.Row();
SCCOL nPrevColSize = r.aEnd.Col() - r.aStart.Col() + 1; SCCOL nPrevColSize = p->aEnd.Col() - p->aStart.Col() + 1;
SCROW nPrevRowSize = r.aEnd.Row() - r.aStart.Row() + 1; SCROW nPrevRowSize = p->aEnd.Row() - p->aStart.Row() + 1;
for ( size_t i = 1; i < aClipParam.maRanges.size(); ++i ) for ( size_t i = 1; i < aClipParam.maRanges.size(); ++i )
{ {
r = aClipParam.maRanges[i]; p = &aClipParam.maRanges[i];
if ( pDoc->HasSelectedBlockMatrixFragment( if ( pDoc->HasSelectedBlockMatrixFragment(
r.aStart.Col(), r.aStart.Row(), r.aEnd.Col(), r.aEnd.Row(), rMark) ) p->aStart.Col(), p->aStart.Row(), p->aEnd.Col(), p->aEnd.Row(), rMark) )
{ {
if (!bApi) if (!bApi)
ErrorMessage(STR_MATRIXFRAGMENTERR); ErrorMessage(STR_MATRIXFRAGMENTERR);
return false; return false;
} }
SCCOL nColDelta = r.aStart.Col() - nPrevCol; SCCOL nColDelta = p->aStart.Col() - nPrevCol;
SCROW nRowDelta = r.aStart.Row() - nPrevRow; SCROW nRowDelta = p->aStart.Row() - nPrevRow;
if ((nColDelta && nRowDelta) || (nPrevColDelta && nRowDelta) || (nPrevRowDelta && nColDelta)) if ((nColDelta && nRowDelta) || (nPrevColDelta && nRowDelta) || (nPrevRowDelta && nColDelta))
{ {
...@@ -341,8 +341,8 @@ bool ScViewFunc::CopyToClip( ScDocument* pClipDoc, const ScRangeList& rRanges, b ...@@ -341,8 +341,8 @@ bool ScViewFunc::CopyToClip( ScDocument* pClipDoc, const ScRangeList& rRanges, b
aClipParam.meDirection = ScClipParam::Row; aClipParam.meDirection = ScClipParam::Row;
} }
SCCOL nColSize = r.aEnd.Col() - r.aStart.Col() + 1; SCCOL nColSize = p->aEnd.Col() - p->aStart.Col() + 1;
SCROW nRowSize = r.aEnd.Row() - r.aStart.Row() + 1; SCROW nRowSize = p->aEnd.Row() - p->aStart.Row() + 1;
if (aClipParam.meDirection == ScClipParam::Column && nRowSize != nPrevRowSize) if (aClipParam.meDirection == ScClipParam::Column && nRowSize != nPrevRowSize)
{ {
...@@ -358,8 +358,8 @@ bool ScViewFunc::CopyToClip( ScDocument* pClipDoc, const ScRangeList& rRanges, b ...@@ -358,8 +358,8 @@ bool ScViewFunc::CopyToClip( ScDocument* pClipDoc, const ScRangeList& rRanges, b
break; break;
} }
nPrevCol = r.aStart.Col(); nPrevCol = p->aStart.Col();
nPrevRow = r.aStart.Row(); nPrevRow = p->aStart.Row();
nPrevColDelta = nColDelta; nPrevColDelta = nColDelta;
nPrevRowDelta = nRowDelta; nPrevRowDelta = nRowDelta;
nPrevColSize = nColSize; nPrevColSize = nColSize;
......
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