summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2014-03-10 20:39:01 -0400
committerKohei Yoshida <kohei.yoshida@collabora.com>2014-03-10 20:42:27 -0400
commitdd7787ed75e33b65ebee2a6c0aa152efded6f1b8 (patch)
treeebdb17dca35faa2ab35a5117ad1bb1cac2ac2829
parent149b580900214c477f8eaf9dd51342796d27b296 (diff)
fdo#75815: Adjust external references here too.
Adjusting external references are much simpler than adjusting internal ones since we don't need to worry about deleted references etc. Change-Id: I82111e383e1fc6976ef08c1438c3dd916a249af6
-rw-r--r--sc/source/core/tool/token.cxx19
1 files changed, 19 insertions, 0 deletions
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index eee7c9d2fd93..80572249302e 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -2751,6 +2751,25 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnShift( const sc::RefUpdateCon
rRef.SetRange(aAbs, aNewPos);
}
break;
+ case svExternalSingleRef:
+ {
+ // For external reference, just reset the reference with
+ // respect to the new cell position.
+ ScToken* pToken = static_cast<ScToken*>(*p);
+ ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScAddress aAbs = rRef.toAbs(rOldPos);
+ rRef.SetAddress(aAbs, aNewPos);
+ }
+ break;
+ case svExternalDoubleRef:
+ {
+ // Same as above.
+ ScToken* pToken = static_cast<ScToken*>(*p);
+ ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScRange aAbs = rRef.toAbs(rOldPos);
+ rRef.SetRange(aAbs, aNewPos);
+ }
+ break;
case svIndex:
{
const formula::FormulaToken* pToken = *p;