diff --git a/src/apps/debugger/gui/team_window/TeamWindow.cpp b/src/apps/debugger/gui/team_window/TeamWindow.cpp index 2689285438..3926c807e0 100644 --- a/src/apps/debugger/gui/team_window/TeamWindow.cpp +++ b/src/apps/debugger/gui/team_window/TeamWindow.cpp @@ -113,6 +113,38 @@ TeamWindow::Create(TeamDebugModel* debugModel, Listener* listener) } +void +TeamWindow::DispatchMessage(BMessage* message, BHandler* handler) +{ + // Handle function key shortcuts for stepping + if (fActiveThread != NULL && message->what == B_KEY_DOWN) { + int32 key; + uint32 modifiers; + if (message->FindInt32("key", &key) == B_OK + && message->FindInt32("modifiers", (int32*)&modifiers) == B_OK) { + switch (key) { + case B_F10_KEY: + fListener->ThreadActionRequested(this, fActiveThread->ID(), + MSG_THREAD_STEP_OVER); + break; + case B_F11_KEY: + if ((modifiers & B_SHIFT_KEY) != 0) { + fListener->ThreadActionRequested(this, + fActiveThread->ID(), MSG_THREAD_STEP_OUT); + } else { + fListener->ThreadActionRequested(this, + fActiveThread->ID(), MSG_THREAD_STEP_INTO); + } + break; + default: + break; + } + } + } + BWindow::DispatchMessage(message, handler); +} + + void TeamWindow::MessageReceived(BMessage* message) { diff --git a/src/apps/debugger/gui/team_window/TeamWindow.h b/src/apps/debugger/gui/team_window/TeamWindow.h index 80d0e19e1a..66da45954a 100644 --- a/src/apps/debugger/gui/team_window/TeamWindow.h +++ b/src/apps/debugger/gui/team_window/TeamWindow.h @@ -43,6 +43,8 @@ public: Listener* listener); // throws + virtual void DispatchMessage(BMessage* message, + BHandler* handler); virtual void MessageReceived(BMessage* message); virtual bool QuitRequested();