[Libreoffice-commits] core.git: Branch 'feature/formula-core-rework' - sc/inc sc/source
Kohei Yoshida
kohei.yoshida at gmail.com
Tue Jul 30 12:47:39 PDT 2013
sc/inc/compiler.hxx | 5
sc/source/core/inc/refupdat.hxx | 26 --
sc/source/core/tool/compiler.cxx | 134 ---------------
sc/source/core/tool/refupdat.cxx | 347 ---------------------------------------
4 files changed, 512 deletions(-)
New commits:
commit badf6557902067afc074f81bdf02c49fde02c045
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Tue Jul 30 15:47:51 2013 -0400
These methods are now unused. Chuck them.
Change-Id: Ib9b0ad855142434e45bcb4d805fc32e7c76b01b8
diff --git a/sc/inc/compiler.hxx b/sc/inc/compiler.hxx
index 9ecb893..46606d8 100644
--- a/sc/inc/compiler.hxx
+++ b/sc/inc/compiler.hxx
@@ -441,11 +441,6 @@ public:
static void MoveRelWrap( ScTokenArray& rArr, ScDocument* pDoc, const ScAddress& rPos,
SCCOL nMaxCol, SCROW nMaxRow );
- void UpdateReference( UpdateRefMode eUpdateRefMode,
- const ScAddress& rOldPos, const ScRange&,
- SCsCOL nDx, SCsROW nDy, SCsTAB nDz,
- bool& rChanged, bool& rRefSizeChanged );
-
/** If the character is allowed as first character in sheet names or
references, includes '$' and '?'. */
static inline bool IsCharWordChar( String const & rStr,
diff --git a/sc/source/core/inc/refupdat.hxx b/sc/source/core/inc/refupdat.hxx
index 8252005..099b173 100644
--- a/sc/source/core/inc/refupdat.hxx
+++ b/sc/source/core/inc/refupdat.hxx
@@ -58,32 +58,6 @@ public:
sal_Int32 nDx, sal_Int32 nDy, sal_Int32 nDz,
ScBigRange& rWhat );
- /**
- * Update range reference in response to row / column insertion / removal,
- * copy-n-pasting of formula cell, moving of cells etc.
- *
- * @param pDoc
- * @param eUpdateRefMode
- * @param rPos position of formula cell that has the range reference.
- * @param rRange range of cells being shifted.
- * @param nDx
- * @param nDy
- * @param nDz
- * @param rRef range reference object
- * @param eWhat
- *
- * @return ScRefUpdateRes
- */
- static ScRefUpdateRes Update(
- ScDocument* pDoc, UpdateRefMode eUpdateRefMode, const ScAddress& rPos,
- const ScRange& rRange, SCsCOL nDx, SCsROW nDy, SCsTAB nDz,
- ScComplexRefData& rRef, ScRange& rRefRange, WhatType eWhat = ALL );
-
- /// Before calling, the absolute references must be up-to-date!
- static ScRefUpdateRes Move(
- ScDocument* pDoc, const ScAddress& rPos, SCsCOL nDx, SCsROW nDy, SCsTAB nDz,
- ScComplexRefData& rRef, ScRange& rRefRange, bool bWrap, bool bAbsolute );
-
static void MoveRelWrap( ScDocument* pDoc, const ScAddress& rPos,
SCCOL nMaxCol, SCROW nMaxRow, ScComplexRefData& rRef );
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index ed60c30..55668cc 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -4137,140 +4137,6 @@ void ScCompiler::MoveRelWrap( ScTokenArray& rArr, ScDocument* pDoc, const ScAddr
}
}
-void ScCompiler::UpdateReference(UpdateRefMode eUpdateRefMode,
- const ScAddress& rOldPos, const ScRange& r,
- SCsCOL nDx, SCsROW nDy, SCsTAB nDz,
- bool& rChanged, bool& rRefSizeChanged )
-{
- rChanged = rRefSizeChanged = false;
- if ( eUpdateRefMode == URM_COPY )
- { // Normally nothing has to be done here since RelRefs are used, also
- // SharedFormulas don't need any special handling, except if they
- // wrapped around sheet borders.
- // But ColRowName tokens pointing to a ColRow header which was
- // copied along with this formula need to be updated to point to the
- // copied header instead of the old position's new intersection.
- ScToken* t;
- pArr->Reset();
- while( (t = static_cast<ScToken*>(pArr->GetNextColRowName())) != NULL )
- {
- ScSingleRefData& rRef = t->GetSingleRef();
- ScAddress aNewRef = rRef.toAbs(rOldPos);
- aNewRef.IncCol(nDx);
- aNewRef.IncRow(nDy);
- aNewRef.IncTab(nDz);
- if ( r.In( aNewRef ) )
- {
- SingleDoubleRefModifier aMod(rRef);
- ScComplexRefData& rRef2 = aMod.Ref();
- ScRange aRefRange = rRef2.toAbs(rOldPos);
- // yes, this is URM_MOVE
- if (ScRefUpdate::Update(pDoc, URM_MOVE, aPos, r, nDx, nDy, nDz, rRef2, aRefRange) != UR_NOTHING)
- {
- rRef2.SetRange(aRefRange, rOldPos);
- rChanged = true;
- }
- }
- }
-
- return;
- }
-
- ScToken* t;
- pArr->Reset();
- while( (t = static_cast<ScToken*>(pArr->GetNextReferenceOrName())) != NULL )
- {
- if (t->GetType() == svIndex)
- continue;
-
- switch (t->GetType())
- {
- case svExternalSingleRef:
- case svExternalDoubleRef:
- // External references never change their positioning
- // nor point to parts that will be removed or expanded.
- // In fact, calling ScRefUpdate::Update() for URM_MOVE
- // may have negative side effects. Simply adapt
- // relative references to the new position.
- break;
- case svSingleRef:
- {
- SingleDoubleRefModifier aRefMod(t->GetSingleRef());
- ScComplexRefData& rRef = aRefMod.Ref();
- ScRange aRefRange = rRef.toAbs(rOldPos);
- if (ScRefUpdate::Update(pDoc, eUpdateRefMode, aPos, r, nDx, nDy, nDz, rRef, aRefRange) != UR_NOTHING)
- {
- rRef.SetRange(aRefRange, rOldPos);
- rChanged = true;
- }
- }
- break;
- default:
- {
- ScComplexRefData& rRef = t->GetDoubleRef();
- ScRange aRefRange = rRef.toAbs(rOldPos);
- SCCOL nCols = aRefRange.aEnd.Col() - aRefRange.aStart.Col();
- SCROW nRows = aRefRange.aEnd.Row() - aRefRange.aStart.Row();
- SCTAB nTabs = aRefRange.aEnd.Tab() - aRefRange.aStart.Tab();
- if (ScRefUpdate::Update(pDoc, eUpdateRefMode, aPos, r, nDx, nDy, nDz, rRef, aRefRange) != UR_NOTHING)
- {
- rRef.SetRange(aRefRange, rOldPos);
- rChanged = true;
- if (aRefRange.aEnd.Col() - aRefRange.aStart.Col() != nCols ||
- aRefRange.aEnd.Row() - aRefRange.aStart.Row() != nRows ||
- aRefRange.aEnd.Tab() - aRefRange.aStart.Tab() != nTabs)
- rRefSizeChanged = true;
- }
- }
- }
- }
- pArr->Reset();
- while ( (t = static_cast<ScToken*>(pArr->GetNextReferenceRPN())) != NULL )
- {
- if (t->GetRef() != 1)
- continue;
-
- if ( t->GetType() == svSingleRef )
- {
- ScSingleRefData& rRef = t->GetSingleRef();
- SingleDoubleRefModifier aMod( rRef );
- if (!rRef.IsRelName())
- {
- ScComplexRefData& rRef2 = aMod.Ref();
- ScRange aRefRange = rRef2.toAbs(rOldPos);
- if (ScRefUpdate::Update(pDoc, eUpdateRefMode, aPos, r, nDx, nDy, nDz, rRef2, aRefRange) != UR_NOTHING)
- {
- rRef2.SetRange(aRefRange, rOldPos);
- rChanged = true;
- }
- }
- }
- else
- {
- ScComplexRefData& rRef = t->GetDoubleRef();
- ScRange aRefRange = rRef.toAbs(rOldPos);
- SCCOL nCols = aRefRange.aEnd.Col() - aRefRange.aStart.Col();
- SCROW nRows = aRefRange.aEnd.Row() - aRefRange.aStart.Row();
- SCTAB nTabs = aRefRange.aEnd.Tab() - aRefRange.aStart.Tab();
- if ( rRef.Ref1.IsRelName() || rRef.Ref2.IsRelName() )
- {
- // do nothing
- }
- else if (ScRefUpdate::Update(pDoc, eUpdateRefMode, aPos, r, nDx, nDy, nDz, rRef, aRefRange) != UR_NOTHING)
- {
- rRef.SetRange(aRefRange, rOldPos);
- rChanged = true;
- if (aRefRange.aEnd.Col() - aRefRange.aStart.Col() != nCols ||
- aRefRange.aEnd.Row() - aRefRange.aStart.Row() != nRows ||
- aRefRange.aEnd.Tab() - aRefRange.aStart.Tab() != nTabs)
- {
- rRefSizeChanged = true;
- }
- }
- }
- }
-}
-
void ScCompiler::CreateStringFromExternal(OUStringBuffer& rBuffer, FormulaToken* pTokenP)
{
FormulaToken* t = pTokenP;
diff --git a/sc/source/core/tool/refupdat.cxx b/sc/source/core/tool/refupdat.cxx
index ca993bd..5ae57be 100644
--- a/sc/source/core/tool/refupdat.cxx
+++ b/sc/source/core/tool/refupdat.cxx
@@ -480,353 +480,6 @@ ScRefUpdateRes ScRefUpdate::Update( UpdateRefMode eUpdateRefMode,
return eRet;
}
-
-ScRefUpdateRes ScRefUpdate::Update(
- ScDocument* pDoc, UpdateRefMode eMode, const ScAddress& rPos, const ScRange& rRange,
- SCsCOL nDx, SCsROW nDy, SCsTAB nDz, ScComplexRefData& rRef, ScRange& rRefRange,
- WhatType eWhat )
-{
- ScRefUpdateRes eRet = UR_NOTHING;
-
- // Range that shifted.
- SCCOL nCol1 = rRange.aStart.Col();
- SCROW nRow1 = rRange.aStart.Row();
- SCTAB nTab1 = rRange.aStart.Tab();
- SCCOL nCol2 = rRange.aEnd.Col();
- SCROW nRow2 = rRange.aEnd.Row();
- SCTAB nTab2 = rRange.aEnd.Tab();
-
- if( eMode == URM_INSDEL )
- {
- // Insertion or deletion
- bool bExpand = pDoc->IsExpandRefs();
-
- const ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
- bool bInDeleteUndo =
- ( pChangeTrack ? pChangeTrack->IsInDeleteUndo() : false );
-
- // Store the old reference range.
- SCCOL nOldCol1 = rRefRange.aStart.Col();
- SCROW nOldRow1 = rRefRange.aStart.Row();
- SCTAB nOldTab1 = rRefRange.aStart.Tab();
- SCCOL nOldCol2 = rRefRange.aEnd.Col();
- SCROW nOldRow2 = rRefRange.aEnd.Row();
- SCTAB nOldTab2 = rRefRange.aEnd.Tab();
-
- bool bRef1ColDel = rRef.Ref1.IsColDeleted();
- bool bRef2ColDel = rRef.Ref2.IsColDeleted();
- bool bRef1RowDel = rRef.Ref1.IsRowDeleted();
- bool bRef2RowDel = rRef.Ref2.IsRowDeleted();
- bool bRef1TabDel = rRef.Ref1.IsTabDeleted();
- bool bRef2TabDel = rRef.Ref2.IsTabDeleted();
-
- if (nDx &&
- ((nRow1 <= rRefRange.aStart.Row() && rRefRange.aEnd.Row() <= nRow2) || (bRef1RowDel || bRef2RowDel)) &&
- ((nTab1 <= rRefRange.aStart.Tab() && rRefRange.aEnd.Tab() <= nTab2) || (bRef1TabDel || bRef2TabDel)))
- {
- // Shift in the column direction, reference range has at least one
- // deleted row or sheet, and the reference range is within the
- // shifted region.
- bool bExp = (bExpand && !bInDeleteUndo && IsExpand(rRefRange.aStart.Col(), rRefRange.aEnd.Col(), nCol1, nDx));
- bool bDo1 = (eWhat == ScRefUpdate::ALL || (eWhat == ScRefUpdate::ABSOLUTE && !rRef.Ref1.IsColRel()));
- bool bDo2 = (eWhat == ScRefUpdate::ALL || (eWhat == ScRefUpdate::ABSOLUTE && !rRef.Ref2.IsColRel()));
- SCCOL nRefCol1 = rRefRange.aStart.Col(), nRefCol2 = rRefRange.aEnd.Col();
- if ( lcl_MoveRefPart(nRefCol1, bRef1ColDel, bDo1,
- nRefCol2, bRef2ColDel, bDo2,
- nCol1, nCol2, nDx, MAXCOL ) )
- {
- rRefRange.aStart.SetCol(nRefCol1);
- rRefRange.aEnd.SetCol(nRefCol2);
-
- eRet = UR_UPDATED;
- if ( bInDeleteUndo && (bRef1ColDel || bRef2ColDel) )
- {
- if (bRef1ColDel &&
- nCol1 <= rRefRange.aStart.Col() && rRefRange.aStart.Col() <= nCol1 + nDx)
- rRef.Ref1.SetColDeleted( false );
- if (bRef2ColDel &&
- nCol1 <= rRefRange.aEnd.Col() && rRefRange.aEnd.Col() <= nCol1 + nDx)
- rRef.Ref2.SetColDeleted( false );
- }
- else
- {
- if ( bRef1ColDel )
- rRef.Ref1.SetColDeleted( true );
- if ( bRef2ColDel )
- rRef.Ref2.SetColDeleted( true );
- }
- }
- if ( bExp )
- {
- nRefCol1 = rRefRange.aStart.Col();
- nRefCol2 = rRefRange.aEnd.Col();
- Expand(nRefCol1, nRefCol2, nCol1, nDx);
- rRefRange.aStart.SetCol(nRefCol1);
- rRefRange.aEnd.SetCol(nRefCol2);
-
- eRet = UR_UPDATED;
- }
- }
-
- if (nDy &&
- ((nCol1 <= rRefRange.aStart.Col() && rRefRange.aEnd.Col() <= nCol2) || (bRef1ColDel || bRef2ColDel)) &&
- ((nTab1 <= rRefRange.aStart.Tab() && rRefRange.aEnd.Tab() <= nTab2) || (bRef1TabDel || bRef2TabDel)))
- {
- // Shift in the row direction, reference range has at least one
- // deleted column or sheet, and the reference range is within the
- // shifted region.
- bool bExp = (bExpand && !bInDeleteUndo && IsExpand(rRefRange.aStart.Row(), rRefRange.aEnd.Row(), nRow1, nDy));
- bool bDo1 = (eWhat == ScRefUpdate::ALL || (eWhat ==
- ScRefUpdate::ABSOLUTE && !rRef.Ref1.IsRowRel()));
- bool bDo2 = (eWhat == ScRefUpdate::ALL || (eWhat ==
- ScRefUpdate::ABSOLUTE && !rRef.Ref2.IsRowRel()));
- SCROW nRefRow1 = rRefRange.aStart.Row(), nRefRow2 = rRefRange.aEnd.Row();
- if (lcl_MoveRefPart(nRefRow1, bRef1RowDel, bDo1, nRefRow2, bRef2RowDel, bDo2, nRow1, nRow2, nDy, MAXROW))
- {
- rRefRange.aStart.SetRow(nRefRow1);
- rRefRange.aEnd.SetRow(nRefRow2);
- eRet = UR_UPDATED;
- if ( bInDeleteUndo && (bRef1RowDel || bRef2RowDel) )
- {
- if (bRef1RowDel && nRow1 <= rRefRange.aStart.Row() && rRefRange.aStart.Row() <= nRow1 + nDy)
- rRef.Ref1.SetRowDeleted( false );
- if (bRef2RowDel && nRow1 <= rRefRange.aEnd.Row() && rRefRange.aEnd.Row() <= nRow1 + nDy)
- rRef.Ref2.SetRowDeleted( false );
- }
- else
- {
- if ( bRef1RowDel )
- rRef.Ref1.SetRowDeleted( true );
- if ( bRef2RowDel )
- rRef.Ref2.SetRowDeleted( true );
- }
- }
- if ( bExp )
- {
- nRefRow1 = rRefRange.aStart.Row();
- nRefRow2 = rRefRange.aEnd.Row();
- Expand(nRefRow1, nRefRow2, nRow1, nDy);
- rRefRange.aStart.SetRow(nRefRow1);
- rRefRange.aEnd.SetRow(nRefRow2);
- eRet = UR_UPDATED;
- }
- }
-
- if (nDz &&
- ((nCol1 <= rRefRange.aStart.Col() && rRefRange.aEnd.Col() <= nCol2) || (bRef1ColDel || bRef2ColDel)) &&
- ((nRow1 <= rRefRange.aStart.Row() && rRefRange.aEnd.Row() <= nRow2) || (bRef1RowDel || bRef2RowDel)))
- {
- // Shift in the sheet direction, reference range has at least one
- // deleted column or row, and the reference range is within the
- // shifted region.
- bool bExp = (bExpand && !bInDeleteUndo && IsExpand(rRefRange.aStart.Tab(), rRefRange.aEnd.Tab(), nTab1, nDz));
- SCTAB nMaxTab = pDoc->GetTableCount() - 1;
- bool bDo1 = (eWhat == ScRefUpdate::ALL || (eWhat ==
- ScRefUpdate::ABSOLUTE && !rRef.Ref1.IsTabRel()));
- bool bDo2 = (eWhat == ScRefUpdate::ALL || (eWhat ==
- ScRefUpdate::ABSOLUTE && !rRef.Ref2.IsTabRel()));
-
- SCTAB nRefTab1 = rRefRange.aStart.Tab(), nRefTab2 = rRefRange.aEnd.Tab();
- if (lcl_MoveRefPart(nRefTab1, bRef1TabDel, bDo1, nRefTab2, bRef2TabDel, bDo2, nTab1, nTab2, nDz, nMaxTab))
- {
- rRefRange.aStart.SetTab(nRefTab1);
- rRefRange.aEnd.SetTab(nRefTab2);
- eRet = UR_UPDATED;
- if ( bInDeleteUndo && (bRef1TabDel || bRef2TabDel) )
- {
- if (bRef1TabDel && nTab1 <= rRefRange.aStart.Tab() && rRefRange.aStart.Tab() <= nTab1 + nDz)
- rRef.Ref1.SetTabDeleted( false );
- if (bRef2TabDel && nTab1 <= rRefRange.aEnd.Tab() && rRefRange.aEnd.Tab() <= nTab1 + nDz)
- rRef.Ref2.SetTabDeleted( false );
- }
- else
- {
- if ( bRef1TabDel )
- rRef.Ref1.SetTabDeleted( true );
- if ( bRef2TabDel )
- rRef.Ref2.SetTabDeleted( true );
- }
- }
- if ( bExp )
- {
- nRefTab1 = rRefRange.aStart.Tab();
- nRefTab2 = rRefRange.aEnd.Tab();
- Expand(nRefTab1, nRefTab2, nTab1, nDz);
- rRefRange.aStart.SetTab(nRefTab1);
- rRefRange.aEnd.SetTab(nRefTab2);
- eRet = UR_UPDATED;
- }
- }
- if ( eRet == UR_NOTHING )
- {
- if (nOldCol1 != rRefRange.aStart.Col()
- || nOldRow1 != rRefRange.aStart.Row()
- || nOldTab1 != rRefRange.aStart.Tab()
- || nOldCol2 != rRefRange.aEnd.Col()
- || nOldRow2 != rRefRange.aEnd.Row()
- || nOldTab2 != rRefRange.aEnd.Tab()
- )
- // Reference has changed, but the flag has not been set !?
- eRet = UR_UPDATED;
- }
- }
- else if( eMode == URM_MOVE )
- {
- // Move
- if ( rRefRange.aStart.Col() >= nCol1-nDx
- && rRefRange.aStart.Row() >= nRow1-nDy
- && rRefRange.aStart.Tab() >= nTab1-nDz
- && rRefRange.aEnd.Col() <= nCol2-nDx
- && rRefRange.aEnd.Row() <= nRow2-nDy
- && rRefRange.aEnd.Tab() <= nTab2-nDz )
- {
- eRet = Move(pDoc, rPos, nDx, nDy, nDz, rRef, rRefRange, false, true); // immer verschieben
- }
- else if ( nDz && rRange.In( rPos ) )
- {
- rRef.Ref1.SetFlag3D( true );
- rRef.Ref2.SetFlag3D( true );
- eRet = UR_UPDATED;
- }
- }
- else if( eMode == URM_COPY && rRange.In( rPos ) )
- {
- eRet = Move(pDoc, rPos, nDx, nDy, nDz, rRef, rRefRange, false, false); // nur relative
- // sollte nicht mehr verwendet werden muessen
- }
-
- return eRet;
-}
-
-
-ScRefUpdateRes ScRefUpdate::Move(
- ScDocument* pDoc, const ScAddress& rPos, SCsCOL nDx, SCsROW nDy, SCsTAB nDz,
- ScComplexRefData& rRef, ScRange& rRefRange, bool bWrap, bool bAbsolute )
-{
- ScRefUpdateRes eRet = UR_NOTHING;
-
- SCCOL nOldCol1 = rRef.Ref1.nCol;
- SCROW nOldRow1 = rRef.Ref1.nRow;
- SCTAB nOldTab1 = rRef.Ref1.nTab;
- SCCOL nOldCol2 = rRef.Ref2.nCol;
- SCROW nOldRow2 = rRef.Ref2.nRow;
- SCTAB nOldTab2 = rRef.Ref2.nTab;
-
- bool bCut1, bCut2;
- if ( nDx )
- {
- bCut1 = bCut2 = false;
- if( bAbsolute || rRef.Ref1.IsColRel() )
- {
- SCCOL nRefCol1 = rRefRange.aStart.Col();
- if( bWrap )
- {
- lcl_MoveItWrap(nRefCol1, nDx, MAXCOL);
- }
- else
- {
- bCut1 = lcl_MoveItCut(nRefCol1, nDx, MAXCOL);
- }
- rRefRange.aStart.SetCol(nRefCol1);
- }
- if( bAbsolute || rRef.Ref2.IsColRel() )
- {
- SCCOL nRefCol2 = rRefRange.aEnd.Col();
- if( bWrap )
- lcl_MoveItWrap(nRefCol2, nDx, MAXCOL);
- else
- bCut2 = lcl_MoveItCut(nRefCol2, nDx, MAXCOL);
- rRefRange.aEnd.SetCol(nRefCol2);
- }
- if ( bCut1 || bCut2 )
- eRet = UR_UPDATED;
- if ( bCut1 && bCut2 )
- {
- rRef.Ref1.SetColDeleted( true );
- rRef.Ref2.SetColDeleted( true );
- }
- }
- if ( nDy )
- {
- bCut1 = bCut2 = false;
- if( bAbsolute || rRef.Ref1.IsRowRel() )
- {
- SCROW nRefRow1 = rRefRange.aStart.Row();
- if( bWrap )
- lcl_MoveItWrap(nRefRow1, nDy, MAXROW);
- else
- bCut1 = lcl_MoveItCut(nRefRow1, nDy, MAXROW);
- rRefRange.aStart.SetRow(nRefRow1);
- }
- if( bAbsolute || rRef.Ref2.IsRowRel() )
- {
- SCROW nRefRow2 = rRefRange.aEnd.Row();
- if( bWrap )
- lcl_MoveItWrap(nRefRow2, nDy, MAXROW);
- else
- bCut2 = lcl_MoveItCut(nRefRow2, nDy, MAXROW);
- rRefRange.aEnd.SetRow(nRefRow2);
- }
- if ( bCut1 || bCut2 )
- eRet = UR_UPDATED;
- if ( bCut1 && bCut2 )
- {
- rRef.Ref1.SetRowDeleted( true );
- rRef.Ref2.SetRowDeleted( true );
- }
- }
- if ( nDz )
- {
- bCut1 = bCut2 = false;
- SCsTAB nMaxTab = (SCsTAB) pDoc->GetTableCount() - 1;
- if( bAbsolute || rRef.Ref1.IsTabRel() )
- {
- SCTAB nRefTab1 = rRefRange.aStart.Tab();
- if( bWrap )
- lcl_MoveItWrap(nRefTab1, nDz, static_cast<SCTAB>(nMaxTab));
- else
- bCut1 = lcl_MoveItCut(nRefTab1, nDz, static_cast<SCTAB>(nMaxTab));
- rRefRange.aStart.SetTab(nRefTab1);
- rRef.Ref1.SetFlag3D(rPos.Tab() != rRefRange.aStart.Tab());
- }
- if( bAbsolute || rRef.Ref2.IsTabRel() )
- {
- SCTAB nRefTab2 = rRefRange.aEnd.Tab();
- if( bWrap )
- lcl_MoveItWrap(nRefTab2, nDz, static_cast<SCTAB>(nMaxTab));
- else
- bCut2 = lcl_MoveItCut(nRefTab2, nDz, static_cast<SCTAB>(nMaxTab));
- rRefRange.aEnd.SetTab(nRefTab2);
- rRef.Ref2.SetFlag3D(rPos.Tab() != rRefRange.aEnd.Tab());
- }
- if ( bCut1 || bCut2 )
- eRet = UR_UPDATED;
- if ( bCut1 && bCut2 )
- {
- rRef.Ref1.SetTabDeleted( true );
- rRef.Ref2.SetTabDeleted( true );
- }
- }
-
- if ( eRet == UR_NOTHING )
- {
- if (nOldCol1 != rRef.Ref1.nCol
- || nOldRow1 != rRef.Ref1.nRow
- || nOldTab1 != rRef.Ref1.nTab
- || nOldCol2 != rRef.Ref2.nCol
- || nOldRow2 != rRef.Ref2.nRow
- || nOldTab2 != rRef.Ref2.nTab
- )
- eRet = UR_UPDATED;
- }
- if ( bWrap && eRet != UR_NOTHING )
- {
- rRef.PutInOrder();
- rRefRange.PutInOrder();
- }
- return eRet;
-}
-
void ScRefUpdate::MoveRelWrap( ScDocument* pDoc, const ScAddress& rPos,
SCCOL nMaxCol, SCROW nMaxRow, ScComplexRefData& rRef )
{
More information about the Libreoffice-commits
mailing list