summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2015-11-17 14:46:11 +0100
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2015-11-20 02:04:36 +0000
commitd9b6f836e58aa3ad1dc6120df89c4001dc7d3091 (patch)
treefc089473069e5cef71db7547de423c8cbd55fcec
parent22f51321902af18ed8cc6b128cc8fa1e7470f797 (diff)
Resolves: tdf#89907 do not modify original ScViewData's ScMarkData
Change-Id: I2ae5a06f9ffe29de0b1cc5875615010da75f4ae9 (cherry picked from commit d1225d60af08ed874ed72066ae0320617d4c8a91) Reviewed-on: https://gerrit.libreoffice.org/20020 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com> Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r--sc/source/ui/view/viewfunc.cxx24
1 files changed, 12 insertions, 12 deletions
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index 2cb761258869..1bb22683d8c4 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -1824,13 +1824,13 @@ void ScViewFunc::SetWidthOrHeight(
if (rRanges.empty())
return;
- // use view's mark if none specified
- if ( !pMarkData )
- pMarkData = &GetViewData().GetMarkData();
+ // Use view's mark if none specified, but do not modify the original data,
+ // i.e. no MarkToMulti() on that.
+ ScMarkData aMarkData( pMarkData ? *pMarkData : GetViewData().GetMarkData());
ScDocShell* pDocSh = GetViewData().GetDocShell();
ScDocument& rDoc = pDocSh->GetDocument();
- SCTAB nFirstTab = pMarkData->GetFirstSelected();
+ SCTAB nFirstTab = aMarkData.GetFirstSelected();
SCTAB nCurTab = GetViewData().GetTabNo();
SCTAB nTab;
if (bRecord && !rDoc.IsUndoEnabled())
@@ -1839,7 +1839,7 @@ void ScViewFunc::SetWidthOrHeight(
ScDocShellModificator aModificator( *pDocSh );
bool bAllowed = true;
- ScMarkData::iterator itr = pMarkData->begin(), itrEnd = pMarkData->end();
+ ScMarkData::iterator itr = aMarkData.begin(), itrEnd = aMarkData.end();
for (; itr != itrEnd && bAllowed; ++itr)
{
for (size_t i = 0, n = rRanges.size(); i < n && bAllowed; ++i)
@@ -1886,7 +1886,7 @@ void ScViewFunc::SetWidthOrHeight(
rDoc.BeginDrawUndo(); // Drawing Updates
pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
- itr = pMarkData->begin();
+ itr = aMarkData.begin();
for (; itr != itrEnd; ++itr)
{
if (bWidth)
@@ -1918,12 +1918,12 @@ void ScViewFunc::SetWidthOrHeight(
}
if ( eMode==SC_SIZE_OPTIMAL || eMode==SC_SIZE_VISOPT )
- pMarkData->MarkToMulti();
+ aMarkData.MarkToMulti();
bool bShow = nSizeTwips > 0 || eMode != SC_SIZE_DIRECT;
bool bOutline = false;
- itr = pMarkData->begin();
+ itr = aMarkData.begin();
for (; itr != itrEnd; ++itr)
{
nTab = *itr;
@@ -2036,7 +2036,7 @@ void ScViewFunc::SetWidthOrHeight(
{
pDocSh->GetUndoManager()->AddUndoAction(
new ScUndoWidthOrHeight(
- pDocSh, *pMarkData, nStart, nCurTab, nEnd, nCurTab,
+ pDocSh, aMarkData, nStart, nCurTab, nEnd, nCurTab,
pUndoDoc, aUndoRanges, pUndoTab, eMode, nSizeTwips, bWidth));
}
@@ -2044,7 +2044,7 @@ void ScViewFunc::SetWidthOrHeight(
// the new heights and widths.
GetViewData().GetView()->RefreshZoom();
- itr = pMarkData->begin();
+ itr = aMarkData.begin();
for (; itr != itrEnd; ++itr)
rDoc.UpdatePageBreaks( *itr );
@@ -2052,7 +2052,7 @@ void ScViewFunc::SetWidthOrHeight(
if (bPaint)
{
- itr = pMarkData->begin();
+ itr = aMarkData.begin();
for (; itr != itrEnd; ++itr)
{
nTab = *itr;
@@ -2087,7 +2087,7 @@ void ScViewFunc::SetWidthOrHeight(
if (ScModelObj* pModelObj = HelperNotifyChanges::getMustPropagateChangesModel(*pDocSh))
{
ScRangeList aChangeRanges;
- itr = pMarkData->begin();
+ itr = aMarkData.begin();
for (; itr != itrEnd; ++itr)
{
nTab = *itr;