diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-03-10 20:39:01 -0400 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2014-03-11 19:09:04 -0500 |
commit | 57ba6cf00b3258838ef6ec75ce7c1c7c38ade751 (patch) | |
tree | 10726f3e2d4c019ffc0e915f0f12383e98b2d146 /sc/source/core/tool | |
parent | 787a663d8579921af4176feeb265dea8aac4d50c (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
(cherry picked from commit dd7787ed75e33b65ebee2a6c0aa152efded6f1b8)
Reviewed-on: https://gerrit.libreoffice.org/8529
Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Diffstat (limited to 'sc/source/core/tool')
-rw-r--r-- | sc/source/core/tool/token.cxx | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx index eb2acb9624a7..ec323de2f6c7 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; |