summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/source/ui/inc/tabview.hxx2
-rw-r--r--sc/source/ui/undo/undoblk.cxx4
-rw-r--r--sc/source/ui/undo/undoutil.cxx6
-rw-r--r--sc/source/ui/unoobj/viewuno.cxx2
-rw-r--r--sc/source/ui/view/dbfunc3.cxx6
-rw-r--r--sc/source/ui/view/tabview2.cxx14
-rw-r--r--sc/source/ui/view/tabview3.cxx6
-rw-r--r--sc/source/ui/view/viewfun2.cxx4
-rw-r--r--sc/source/ui/view/viewfun3.cxx4
-rw-r--r--sc/source/ui/view/viewfunc.cxx7
10 files changed, 29 insertions, 26 deletions
diff --git a/sc/source/ui/inc/tabview.hxx b/sc/source/ui/inc/tabview.hxx
index 0bdc143d3e62..81151f10fe48 100644
--- a/sc/source/ui/inc/tabview.hxx
+++ b/sc/source/ui/inc/tabview.hxx
@@ -521,7 +521,7 @@ public:
void InitBlockMode( SCCOL nCurX, SCROW nCurY, SCTAB nCurZ,
bool bTestNeg = false,
bool bCols = false, bool bRows = false, bool bForceNeg = false );
- void InitOwnBlockMode();
+ void InitOwnBlockMode( const ScRange& rMarkRange );
void DoneBlockMode( bool bContinue = false );
bool IsBlockMode() const;
diff --git a/sc/source/ui/undo/undoblk.cxx b/sc/source/ui/undo/undoblk.cxx
index be93e37bd35f..998330bfe632 100644
--- a/sc/source/ui/undo/undoblk.cxx
+++ b/sc/source/ui/undo/undoblk.cxx
@@ -1690,7 +1690,7 @@ void ScUndoUseScenario::Undo()
if (pViewShell)
{
pViewShell->DoneBlockMode();
- pViewShell->InitOwnBlockMode();
+ pViewShell->InitOwnBlockMode( aRange );
}
ScDocument& rDoc = pDocShell->GetDocument();
@@ -1747,7 +1747,7 @@ void ScUndoUseScenario::Redo()
{
pViewShell->SetTabNo( nTab );
pViewShell->DoneBlockMode();
- pViewShell->InitOwnBlockMode();
+ pViewShell->InitOwnBlockMode( aRange );
}
pDocShell->UseScenario( nTab, aName, false );
diff --git a/sc/source/ui/undo/undoutil.cxx b/sc/source/ui/undo/undoutil.cxx
index fc0e71b69db5..de9a50ef8283 100644
--- a/sc/source/ui/undo/undoutil.cxx
+++ b/sc/source/ui/undo/undoutil.cxx
@@ -43,11 +43,11 @@ void ScUndoUtil::MarkSimpleBlock( const ScDocShell* pDocShell,
if ( nViewTab < nStartZ || nViewTab > nEndZ )
pViewShell->SetTabNo( nStartZ );
+ const ScRange aMarkRange( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ);
pViewShell->DoneBlockMode();
pViewShell->MoveCursorAbs( nStartX, nStartY, SC_FOLLOW_JUMP, false, false );
- pViewShell->InitOwnBlockMode();
- pViewShell->GetViewData().GetMarkData().
- SetMarkArea( ScRange( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ) );
+ pViewShell->InitOwnBlockMode( aMarkRange );
+ pViewShell->GetViewData().GetMarkData().SetMarkArea( aMarkRange );
pViewShell->MarkDataChanged();
}
diff --git a/sc/source/ui/unoobj/viewuno.cxx b/sc/source/ui/unoobj/viewuno.cxx
index e933830534d3..5c6d599dd74f 100644
--- a/sc/source/ui/unoobj/viewuno.cxx
+++ b/sc/source/ui/unoobj/viewuno.cxx
@@ -724,7 +724,7 @@ sal_Bool SAL_CALL ScTabViewObj::select( const uno::Any& aSelection )
if ( !lcl_TabInRanges( rViewData.GetTabNo(), rRanges ) )
pViewSh->SetTabNo( rFirst.aStart.Tab() );
pViewSh->DoneBlockMode();
- pViewSh->InitOwnBlockMode();
+ pViewSh->InitOwnBlockMode( rFirst ); /* TODO: or even the overall range? */
rViewData.GetMarkData().MarkFromRangeList( rRanges, true );
pViewSh->MarkDataChanged();
rViewData.GetDocShell()->PostPaintGridAll(); // Marks (old&new)
diff --git a/sc/source/ui/view/dbfunc3.cxx b/sc/source/ui/view/dbfunc3.cxx
index 29479c7ef78f..517734290d16 100644
--- a/sc/source/ui/view/dbfunc3.cxx
+++ b/sc/source/ui/view/dbfunc3.cxx
@@ -587,10 +587,10 @@ void ScDBFunc::DoSubTotals( const ScSubTotalParam& rParam, bool bRecord,
pDBData->SetArea( nTab, aNewParam.nCol1,aNewParam.nRow1, aNewParam.nCol2,aNewParam.nRow2 );
rDoc.CompileDBFormula();
+ const ScRange aMarkRange( aNewParam.nCol1, aNewParam.nRow1, nTab, aNewParam.nCol2, aNewParam.nRow2, nTab);
DoneBlockMode();
- InitOwnBlockMode();
- rMark.SetMarkArea( ScRange( aNewParam.nCol1,aNewParam.nRow1,nTab,
- aNewParam.nCol2,aNewParam.nRow2,nTab ) );
+ InitOwnBlockMode( aMarkRange );
+ rMark.SetMarkArea( aMarkRange );
MarkDataChanged();
pDocSh->PostPaint(ScRange(0, 0, nTab, rDoc.MaxCol(), rDoc.MaxRow(), nTab),
diff --git a/sc/source/ui/view/tabview2.cxx b/sc/source/ui/view/tabview2.cxx
index ecfcd036c750..aae991eaf799 100644
--- a/sc/source/ui/view/tabview2.cxx
+++ b/sc/source/ui/view/tabview2.cxx
@@ -329,7 +329,7 @@ bool ScTabView::IsMarking( SCCOL nCol, SCROW nRow, SCTAB nTab ) const
&& nBlockStartZ == nTab;
}
-void ScTabView::InitOwnBlockMode()
+void ScTabView::InitOwnBlockMode( const ScRange& rMarkRange )
{
if (IsBlockMode())
return;
@@ -340,12 +340,12 @@ void ScTabView::InitOwnBlockMode()
GetSelEngine()->CursorPosChanging( false, false );
meBlockMode = Own;
- nBlockStartX = 0;
- nBlockStartY = 0;
- nBlockStartZ = 0;
- nBlockEndX = 0;
- nBlockEndY = 0;
- nBlockEndZ = 0;
+ nBlockStartX = rMarkRange.aStart.Col();
+ nBlockStartY = rMarkRange.aStart.Row();
+ nBlockStartZ = rMarkRange.aStart.Tab();
+ nBlockEndX = rMarkRange.aEnd.Col();
+ nBlockEndY = rMarkRange.aEnd.Row();
+ nBlockEndZ = rMarkRange.aEnd.Tab();
SelectionChanged(); // status is checked with mark set
}
diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx
index 7e6fec2f93f1..4471b3662c35 100644
--- a/sc/source/ui/view/tabview3.cxx
+++ b/sc/source/ui/view/tabview3.cxx
@@ -1241,7 +1241,7 @@ void ScTabView::MoveCursorAbs( SCCOL nCurX, SCROW nCurY, ScFollowMode eMode,
{
rMark.ResetMark();
DoneBlockMode();
- InitOwnBlockMode();
+ InitOwnBlockMode( ScRange( nCurX, nCurY, aViewData.GetTabNo()));
MarkDataChanged();
}
}
@@ -1737,7 +1737,9 @@ void ScTabView::Unmark()
void ScTabView::SetMarkData( const ScMarkData& rNew )
{
DoneBlockMode();
- InitOwnBlockMode();
+ ScRange aMarkArea( ScAddress::UNINITIALIZED );
+ rNew.GetMarkArea( aMarkArea );
+ InitOwnBlockMode( aMarkArea );
aViewData.GetMarkData() = rNew;
MarkDataChanged();
diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx
index fd19f833540d..49b8fc14f30f 100644
--- a/sc/source/ui/view/viewfun2.cxx
+++ b/sc/source/ui/view/viewfun2.cxx
@@ -2008,7 +2008,7 @@ bool ScViewFunc::SearchAndReplace( const SvxSearchItem* pSearchItem,
}
DoneBlockMode(true); // don't delete mark
- InitOwnBlockMode();
+ InitOwnBlockMode( ScRange( nCol, nRow, nStartTab, nCol, nRow, nEndTab));
// If search starts at the beginning don't ask again whether it shall start at the beginning
bool bFirst = true;
@@ -2359,7 +2359,7 @@ void ScViewFunc::UseScenario( const OUString& rName )
SCTAB nTab = GetViewData().GetTabNo();
DoneBlockMode();
- InitOwnBlockMode();
+ InitOwnBlockMode( ScRange( GetViewData().GetCurX(), GetViewData().GetCurY(), nTab));
pDocSh->UseScenario( nTab, rName );
}
diff --git a/sc/source/ui/view/viewfun3.cxx b/sc/source/ui/view/viewfun3.cxx
index 679557d020b4..5d080719c3e3 100644
--- a/sc/source/ui/view/viewfun3.cxx
+++ b/sc/source/ui/view/viewfun3.cxx
@@ -111,7 +111,7 @@ void ScViewFunc::CutToClip()
if ( !rMark.IsMarked() && !rMark.IsMultiMarked() ) // mark the range if not marked yet
{
DoneBlockMode();
- InitOwnBlockMode();
+ InitOwnBlockMode( aRange );
rMark.SetMarkArea( aRange );
MarkDataChanged();
}
@@ -1270,7 +1270,7 @@ bool ScViewFunc::PasteFromClip( InsertDeleteFlags nFlags, ScDocument* pClipDoc,
if (GetViewData().IsActive())
{
DoneBlockMode();
- InitOwnBlockMode();
+ InitOwnBlockMode( aUserRange );
}
rMark.SetMarkArea( aUserRange );
MarkDataChanged();
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index 8d444122a7ed..a9a2b36d6349 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -1063,7 +1063,7 @@ void ScViewFunc::ApplyPatternLines( const ScPatternAttr& rAttr, const SvxBoxItem
aMarkRange = ScRange( GetViewData().GetCurX(),
GetViewData().GetCurY(), GetViewData().GetTabNo() );
DoneBlockMode();
- InitOwnBlockMode();
+ InitOwnBlockMode( aMarkRange );
aFuncMark.SetMarkArea(aMarkRange);
MarkDataChanged();
}
@@ -2366,9 +2366,10 @@ void ScViewFunc::SetMarkedWidthOrHeight( bool bWidth, ScSizeMode eMode, sal_uInt
SCCOL nCol = GetViewData().GetCurX();
SCROW nRow = GetViewData().GetCurY();
SCTAB nTab = GetViewData().GetTabNo();
+ const ScRange aMarkRange( nCol, nRow, nTab);
DoneBlockMode();
- InitOwnBlockMode();
- rMark.SetMultiMarkArea( ScRange( nCol,nRow,nTab ) );
+ InitOwnBlockMode( aMarkRange );
+ rMark.SetMultiMarkArea( aMarkRange );
MarkDataChanged();
}