From dd7787ed75e33b65ebee2a6c0aa152efded6f1b8 Mon Sep 17 00:00:00 2001 From: Kohei Yoshida Date: Mon, 10 Mar 2014 20:39:01 -0400 Subject: [PATCH] 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 --- sc/source/core/tool/token.cxx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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(*p); + ScSingleRefData& rRef = pToken->GetSingleRef(); + ScAddress aAbs = rRef.toAbs(rOldPos); + rRef.SetAddress(aAbs, aNewPos); + } + break; + case svExternalDoubleRef: + { + // Same as above. + ScToken* pToken = static_cast(*p); + ScComplexRefData& rRef = pToken->GetDoubleRef(); + ScRange aAbs = rRef.toAbs(rOldPos); + rRef.SetRange(aAbs, aNewPos); + } + break; case svIndex: { const formula::FormulaToken* pToken = *p;