diff options
author | Kohei Yoshida <kohei.yoshida@suse.com> | 2012-01-03 20:24:40 -0500 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@suse.com> | 2012-01-03 21:38:18 -0500 |
commit | ff81615f0a09a6cf3fafee70af362b708c7ed8d0 (patch) | |
tree | d636c4d7f20c45df562c9ef831a97635ff85ef6c | |
parent | fd982205e6fe6eb4333d22c3494931ab7f7b3faf (diff) |
Get the reference jump feature to work with relative references.
By 'reference jump feature' I mean Ctrl-[ and Ctrl-].
-rw-r--r-- | sc/source/core/tool/detfunc.cxx | 6 | ||||
-rw-r--r-- | sc/source/core/tool/reftokenhelper.cxx | 17 |
2 files changed, 8 insertions, 15 deletions
diff --git a/sc/source/core/tool/detfunc.cxx b/sc/source/core/tool/detfunc.cxx index 75fe3126ee49..567ba49fa079 100644 --- a/sc/source/core/tool/detfunc.cxx +++ b/sc/source/core/tool/detfunc.cxx @@ -1422,6 +1422,7 @@ void ScDetectiveFunc::GetAllPreds(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW n for (ScToken* p = aRefIter.GetNextRefToken(); p; p = aRefIter.GetNextRefToken()) { ScTokenRef pRef(static_cast<ScToken*>(p->Clone())); + pRef->CalcAbsIfRel(aCellIter.GetPos()); ScRefTokenHelper::join(rRefTokens, pRef); } } @@ -1444,10 +1445,13 @@ void ScDetectiveFunc::GetAllSuccs(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW n ScDetectiveRefIter aRefIter(pFCell); for (ScToken* p = aRefIter.GetNextRefToken(); p; p = aRefIter.GetNextRefToken()) { + ScAddress aPos = aCellIter.GetPos(); ScTokenRef pRef(static_cast<ScToken*>(p->Clone())); + pRef->CalcAbsIfRel(aPos); if (ScRefTokenHelper::intersects(aSrcRange, pRef)) { - pRef = ScRefTokenHelper::createRefToken(aCellIter.GetPos()); + // This address is absolute. + pRef = ScRefTokenHelper::createRefToken(aPos); ScRefTokenHelper::join(rRefTokens, pRef); } } diff --git a/sc/source/core/tool/reftokenhelper.cxx b/sc/source/core/tool/reftokenhelper.cxx index 1d966f1dea0d..364556cba087 100644 --- a/sc/source/core/tool/reftokenhelper.cxx +++ b/sc/source/core/tool/reftokenhelper.cxx @@ -141,20 +141,9 @@ namespace { //may return a relative address void singleRefToAddr(const ScSingleRefData& rRef, ScAddress& rAddr) { - if (rRef.IsColRel()) - rAddr.SetCol(rRef.nRelCol); - else - rAddr.SetCol(rRef.nCol); - - if (rRef.IsRowRel()) - rAddr.SetRow(rRef.nRelRow); - else - rAddr.SetRow(rRef.nRow); - - if (rRef.IsTabRel()) - rAddr.SetTab(rRef.nRelTab); - else - rAddr.SetTab(rRef.nTab); + rAddr.SetCol(rRef.nCol); + rAddr.SetRow(rRef.nRow); + rAddr.SetTab(rRef.nTab); } //returns an absolute address in reference to rPos |