[haiku-commits] haiku: hrev45805 - in src: apps/debugger/user_interface/gui/team_window kits/interface

  • From: anevilyak@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 29 Jun 2013 20:39:32 +0200 (CEST)

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**>(&currentStackTrace))
-                                       == 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);
 }
 
 


Other related posts:

  • » [haiku-commits] haiku: hrev45805 - in src: apps/debugger/user_interface/gui/team_window kits/interface - anevilyak