Kaydet (Commit) ff81615f authored tarafından Kohei Yoshida's avatar Kohei Yoshida

Get the reference jump feature to work with relative references.

By 'reference jump feature' I mean Ctrl-[ and Ctrl-].
üst fd982205
...@@ -1422,6 +1422,7 @@ void ScDetectiveFunc::GetAllPreds(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW n ...@@ -1422,6 +1422,7 @@ void ScDetectiveFunc::GetAllPreds(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW n
for (ScToken* p = aRefIter.GetNextRefToken(); p; p = aRefIter.GetNextRefToken()) for (ScToken* p = aRefIter.GetNextRefToken(); p; p = aRefIter.GetNextRefToken())
{ {
ScTokenRef pRef(static_cast<ScToken*>(p->Clone())); ScTokenRef pRef(static_cast<ScToken*>(p->Clone()));
pRef->CalcAbsIfRel(aCellIter.GetPos());
ScRefTokenHelper::join(rRefTokens, pRef); ScRefTokenHelper::join(rRefTokens, pRef);
} }
} }
...@@ -1444,10 +1445,13 @@ void ScDetectiveFunc::GetAllSuccs(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW n ...@@ -1444,10 +1445,13 @@ void ScDetectiveFunc::GetAllSuccs(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW n
ScDetectiveRefIter aRefIter(pFCell); ScDetectiveRefIter aRefIter(pFCell);
for (ScToken* p = aRefIter.GetNextRefToken(); p; p = aRefIter.GetNextRefToken()) for (ScToken* p = aRefIter.GetNextRefToken(); p; p = aRefIter.GetNextRefToken())
{ {
ScAddress aPos = aCellIter.GetPos();
ScTokenRef pRef(static_cast<ScToken*>(p->Clone())); ScTokenRef pRef(static_cast<ScToken*>(p->Clone()));
pRef->CalcAbsIfRel(aPos);
if (ScRefTokenHelper::intersects(aSrcRange, pRef)) if (ScRefTokenHelper::intersects(aSrcRange, pRef))
{ {
pRef = ScRefTokenHelper::createRefToken(aCellIter.GetPos()); // This address is absolute.
pRef = ScRefTokenHelper::createRefToken(aPos);
ScRefTokenHelper::join(rRefTokens, pRef); ScRefTokenHelper::join(rRefTokens, pRef);
} }
} }
......
...@@ -141,20 +141,9 @@ namespace { ...@@ -141,20 +141,9 @@ namespace {
//may return a relative address //may return a relative address
void singleRefToAddr(const ScSingleRefData& rRef, ScAddress& rAddr) void singleRefToAddr(const ScSingleRefData& rRef, ScAddress& rAddr)
{ {
if (rRef.IsColRel()) rAddr.SetCol(rRef.nCol);
rAddr.SetCol(rRef.nRelCol); rAddr.SetRow(rRef.nRow);
else rAddr.SetTab(rRef.nTab);
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);
} }
//returns an absolute address in reference to rPos //returns an absolute address in reference to rPos
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment