diff options
author | Eike Rathke <erack@redhat.com> | 2015-11-17 14:46:11 +0100 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2015-11-20 02:04:36 +0000 |
commit | d9b6f836e58aa3ad1dc6120df89c4001dc7d3091 (patch) | |
tree | fc089473069e5cef71db7547de423c8cbd55fcec | |
parent | 22f51321902af18ed8cc6b128cc8fa1e7470f797 (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.cxx | 24 |
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; |