summaryrefslogtreecommitdiff
path: root/sc/source/core/tool/rangenam.cxx
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2013-07-30 21:27:21 -0400
committerKohei Yoshida <kohei.yoshida@gmail.com>2013-07-30 23:50:03 -0400
commit8a19af57bbcc57a02a7d87c6408d1e3212a6deba (patch)
tree73c07df0169af4f6ab9efd11fd4c1a629d3f41fa /sc/source/core/tool/rangenam.cxx
parent3ddb748a46e9c21fd4a7d8eb82aa7569f3bc868a (diff)
Now nobody accesses reference members directly. Make them private.
Change-Id: If4499dbee52532cc8a95c380bbe840719fe9279b
Diffstat (limited to 'sc/source/core/tool/rangenam.cxx')
-rw-r--r--sc/source/core/tool/rangenam.cxx54
1 files changed, 39 insertions, 15 deletions
diff --git a/sc/source/core/tool/rangenam.cxx b/sc/source/core/tool/rangenam.cxx
index aae97ed58a60..5df981302cfc 100644
--- a/sc/source/core/tool/rangenam.cxx
+++ b/sc/source/core/tool/rangenam.cxx
@@ -548,22 +548,24 @@ void ScRangeData::ValidateTabRefs()
while ( ( t = static_cast<ScToken*>(pCode->GetNextReference()) ) != NULL )
{
ScSingleRefData& rRef1 = t->GetSingleRef();
+ ScAddress aAbs = rRef1.toAbs(aPos);
if ( rRef1.IsTabRel() && !rRef1.IsTabDeleted() )
{
- if ( rRef1.nTab < nMinTab )
- nMinTab = rRef1.nTab;
- if ( rRef1.nTab > nMaxTab )
- nMaxTab = rRef1.nTab;
+ if (aAbs.Tab() < nMinTab)
+ nMinTab = aAbs.Tab();
+ if (aAbs.Tab() > nMaxTab)
+ nMaxTab = aAbs.Tab();
}
if ( t->GetType() == svDoubleRef )
{
ScSingleRefData& rRef2 = t->GetDoubleRef().Ref2;
+ aAbs = rRef2.toAbs(aPos);
if ( rRef2.IsTabRel() && !rRef2.IsTabDeleted() )
{
- if ( rRef2.nTab < nMinTab )
- nMinTab = rRef2.nTab;
- if ( rRef2.nTab > nMaxTab )
- nMaxTab = rRef2.nTab;
+ if (aAbs.Tab() < nMinTab)
+ nMinTab = aAbs.Tab();
+ if (aAbs.Tab() > nMaxTab)
+ nMaxTab = aAbs.Tab();
}
}
}
@@ -575,19 +577,41 @@ void ScRangeData::ValidateTabRefs()
// The formulas that use the name are not changed by this
SCTAB nMove = nMinTab;
+ ScAddress aOldPos = aPos;
aPos.SetTab( aPos.Tab() - nMove );
pCode->Reset();
while ( ( t = static_cast<ScToken*>(pCode->GetNextReference()) ) != NULL )
{
- ScSingleRefData& rRef1 = t->GetSingleRef();
- if ( rRef1.IsTabRel() && !rRef1.IsTabDeleted() )
- rRef1.nTab = sal::static_int_cast<SCsTAB>( rRef1.nTab - nMove );
- if ( t->GetType() == svDoubleRef )
+ switch (t->GetType())
{
- ScSingleRefData& rRef2 = t->GetDoubleRef().Ref2;
- if ( rRef2.IsTabRel() && !rRef2.IsTabDeleted() )
- rRef2.nTab = sal::static_int_cast<SCsTAB>( rRef2.nTab - nMove );
+ case svSingleRef:
+ {
+ ScSingleRefData& rRef = t->GetSingleRef();
+ if (!rRef.IsTabDeleted())
+ {
+ ScAddress aAbs = rRef.toAbs(aOldPos);
+ rRef.SetAddress(aAbs, aPos);
+ }
+ }
+ break;
+ case svDoubleRef:
+ {
+ ScComplexRefData& rRef = t->GetDoubleRef();
+ if (!rRef.Ref1.IsTabDeleted())
+ {
+ ScAddress aAbs = rRef.Ref1.toAbs(aOldPos);
+ rRef.Ref1.SetAddress(aAbs, aPos);
+ }
+ if (!rRef.Ref2.IsTabDeleted())
+ {
+ ScAddress aAbs = rRef.Ref2.toAbs(aOldPos);
+ rRef.Ref2.SetAddress(aAbs, aPos);
+ }
+ }
+ break;
+ default:
+ ;
}
}
}