ide/Debugger, CallStackView: Fixed long standing callstack woes
authorJerome St-Louis <jerome@ecere.com>
Fri, 30 Aug 2013 06:02:49 +0000 (02:02 -0400)
committerJerome St-Louis <jerome@ecere.com>
Fri, 30 Aug 2013 06:02:49 +0000 (02:02 -0400)
ide/src/debugger/Debugger.ec
ide/src/ide.ec
ide/src/panels/CallStackView.ec

index 15acfb1..21a232d 100644 (file)
@@ -681,7 +681,7 @@ class Debugger
          if(monitor && curEvent.canBeMonitored)
          {
             SelectFrame(activeFrameLevel);
-            GoToStackFrameLine(activeFrameLevel, true);
+            GoToStackFrameLine(activeFrameLevel, true, false);
             ide.ShowCodeEditor();
             ideMainFrame.Activate();   // TOFIX: ide.Activate() is not reliable (app inactive)
             ide.Update(null);
@@ -863,7 +863,7 @@ class Debugger
       return false;
    }
 
-   bool GoToStackFrameLine(int stackLevel, bool askForLocation)
+   bool GoToStackFrameLine(int stackLevel, bool askForLocation, bool fromCallStack)
    {
       _dpl2(_dpct, dplchan::debuggerCall, 0, "Debugger::GoToStackFrameLine(", stackLevel, ", ", askForLocation, ")");
       if(ide)
@@ -879,7 +879,8 @@ class Debugger
                break;
          if(frame)
          {
-            ide.callStackView.Show();
+            if(!fromCallStack)
+               ide.callStackView.Show();
 
             if(frame.absoluteFile)
                editor = (CodeEditor)ide.OpenFile(frame.absoluteFile, normal, true, null, no, normal, false);
@@ -900,6 +901,8 @@ class Debugger
             }
             if(!editor && frame.absoluteFile)
                editor = (CodeEditor)ide.OpenFile(frame.absoluteFile, normal, true, null, no, normal, false);
+            if(editor)
+               ide.RepositionWindows(false);
             ide.Update(null);
             if(editor && frame.line)
             {
@@ -927,7 +930,7 @@ class Debugger
             GdbGetStack();
             // Why was SelectFrame missing here?
             SelectFrame(activeFrameLevel);
-            GoToStackFrameLine(activeFrameLevel, true);
+            GoToStackFrameLine(activeFrameLevel, true, false);
             WatchesCodeEditorLinkRelease();
             WatchesCodeEditorLinkInit();
             EvaluateWatches();
index 99de979..4149b57 100644 (file)
@@ -471,7 +471,7 @@ class IDEWorkSpace : Window
 
       void OnSelectFrame(int frameIndex)
       {
-         ide.debugger.GoToStackFrameLine(frameIndex, true);
+         ide.debugger.GoToStackFrameLine(frameIndex, true, true);
          if(frameIndex >= 0)
             ide.debugger.SelectFrame(frameIndex);
       }
index 2fbd364..a65f843 100644 (file)
@@ -36,7 +36,7 @@ class CallStackView : Window
          if(strcmp(editBox.line.text, "..."))
             frameIndex = atoi(editBox.line.text);
          OnSelectFrame(frameIndex);
-         return true;
+         return false;
       }
 
       bool NotifyKeyDown(EditBox editBox, Key key, unichar ch)