Resolve TODO: If a function is selected by other means than the stack
trace view, but we have a call frame matching that function, then jump to that frame in the stack trace view as well. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42437 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -743,9 +743,6 @@ TeamWindow::_SetActiveBreakpoint(UserBreakpoint* breakpoint)
|
|||||||
void
|
void
|
||||||
TeamWindow::_SetActiveFunction(FunctionInstance* functionInstance)
|
TeamWindow::_SetActiveFunction(FunctionInstance* functionInstance)
|
||||||
{
|
{
|
||||||
// TODO: If a function is selected by other means than via selecting a stack
|
|
||||||
// frame, we should still select a matching stack frame, if it features the
|
|
||||||
// same function.
|
|
||||||
if (functionInstance == fActiveFunction)
|
if (functionInstance == fActiveFunction)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -792,6 +789,26 @@ TeamWindow::_SetActiveFunction(FunctionInstance* functionInstance)
|
|||||||
_SetActiveSourceCode(sourceCode);
|
_SetActiveSourceCode(sourceCode);
|
||||||
|
|
||||||
fImageFunctionsView->SetFunction(fActiveFunction);
|
fImageFunctionsView->SetFunction(fActiveFunction);
|
||||||
|
|
||||||
|
locker.Lock();
|
||||||
|
|
||||||
|
// look if our current stack trace has a frame matching the selected
|
||||||
|
// function. If so, set it to match.
|
||||||
|
StackFrame* matchingFrame = NULL;
|
||||||
|
if (fActiveStackTrace != NULL) {
|
||||||
|
for (int32 i = 0; i < fActiveStackTrace->CountFrames(); i++) {
|
||||||
|
StackFrame* frame = fActiveStackTrace->FrameAt(i);
|
||||||
|
if (frame->Function() == fActiveFunction) {
|
||||||
|
matchingFrame = frame;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
locker.Unlock();
|
||||||
|
|
||||||
|
if (matchingFrame != NULL)
|
||||||
|
_SetActiveStackFrame(matchingFrame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user