hrev45805 adds 2 changesets to branch 'master' old head: f901b5b7fb9ebae4d4908014c1a5364353032ae6 new head: eaedb2f8a47036540c14494bc4cb8a02218fd12b overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=eaedb2f+%5Ef901b5b ---------------------------------------------------------------------------- cb630dd: Cleanups. eaedb2f: Fix regression introduced in 16e486e. Explicitly select the first tab if the caller hasn't done so by the time we're attached to the window. [ Rene Gollent <anevilyak@xxxxxxxxx> ] ---------------------------------------------------------------------------- 2 files changed, 27 insertions(+), 21 deletions(-) .../gui/team_window/StackTraceView.cpp | 45 +++++++++++--------- src/kits/interface/TabView.cpp | 3 +- ############################################################################ Commit: cb630dde7829e56d55296698f2935f525af7e4c4 URL: http://cgit.haiku-os.org/haiku/commit/?id=cb630dd Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Sat Jun 29 17:43:30 2013 UTC Cleanups. ---------------------------------------------------------------------------- diff --git a/src/apps/debugger/user_interface/gui/team_window/StackTraceView.cpp b/src/apps/debugger/user_interface/gui/team_window/StackTraceView.cpp index 5850f87..65deea3 100644 --- a/src/apps/debugger/user_interface/gui/team_window/StackTraceView.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/StackTraceView.cpp @@ -157,23 +157,21 @@ StackTraceView::SetStackTrace(StackTrace* stackTrace) { if (stackTrace == fStackTrace) return; - else if (stackTrace == NULL) { - if (fTraceUpdateRunner == NULL) { - BMessage message(MSG_CLEAR_STACK_TRACE); - message.AddPointer("currentTrace", fStackTrace); - fTraceUpdateRunner = new(std::nothrow) BMessageRunner(this, - message, 250000, 1); - if (fTraceUpdateRunner != NULL - && fTraceUpdateRunner->InitCheck() != B_OK) { - delete fTraceUpdateRunner; - fTraceUpdateRunner = NULL; - } + + if (stackTrace == NULL) { + if (fTraceUpdateRunner != NULL) + return; + + BMessage message(MSG_CLEAR_STACK_TRACE); + fTraceUpdateRunner = new(std::nothrow) BMessageRunner(this, + message, 250000, 1); + if (fTraceUpdateRunner != NULL + && fTraceUpdateRunner->InitCheck() == B_OK) { + return; } - } else { - delete fTraceUpdateRunner; - fTraceUpdateRunner = NULL; - _SetStackTrace(stackTrace); } + + _SetStackTrace(stackTrace); } @@ -225,12 +223,8 @@ StackTraceView::MessageReceived(BMessage* message) switch (message->what) { case MSG_CLEAR_STACK_TRACE: { - StackTrace* currentStackTrace; - if (message->FindPointer("currentTrace", - reinterpret_cast<void**>(¤tStackTrace)) - == B_OK && currentStackTrace == fStackTrace) { + if (fTraceUpdateRunner != NULL) _SetStackTrace(NULL); - } break; } default: @@ -248,6 +242,14 @@ StackTraceView::TableSelectionChanged(Table* table) if (fListener == NULL) return; + if (fTraceUpdateRunner != NULL) { + // in this instance, ignore the selection change, since the + // stack trace for which a selection change was requested will + // momentarily be invalid. This case is quite unlikely to be hit + // anyways. + return; + } + StackFrame* frame = fFramesTableModel->FrameAt(table->SelectionModel()->RowAt(0)); @@ -284,6 +286,9 @@ StackTraceView::_Init() void StackTraceView::_SetStackTrace(StackTrace* stackTrace) { + delete fTraceUpdateRunner; + fTraceUpdateRunner = NULL; + if (fStackTrace != NULL) fStackTrace->ReleaseReference(); ############################################################################ Revision: hrev45805 Commit: eaedb2f8a47036540c14494bc4cb8a02218fd12b URL: http://cgit.haiku-os.org/haiku/commit/?id=eaedb2f Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Sat Jun 29 18:35:04 2013 UTC Fix regression introduced in 16e486e. Explicitly select the first tab if the caller hasn't done so by the time we're attached to the window. ---------------------------------------------------------------------------- diff --git a/src/kits/interface/TabView.cpp b/src/kits/interface/TabView.cpp index d7a08f34..157b453 100644 --- a/src/kits/interface/TabView.cpp +++ b/src/kits/interface/TabView.cpp @@ -569,7 +569,8 @@ BTabView::AttachedToWindow() { BView::AttachedToWindow(); - Select(fSelection); + if (fSelection < 0) + Select(0); }