Browse Source

Fixed CallStackPad not refreshing when during initialization.

pull/6/merge
Daniel Grunwald 14 years ago
parent
commit
78c9de6e32
  1. 39
      src/AddIns/Debugger/Debugger.AddIn/Pads/CallStackPad.xaml.cs

39
src/AddIns/Debugger/Debugger.AddIn/Pads/CallStackPad.xaml.cs

@ -12,6 +12,7 @@ using System.Windows.Media; @@ -12,6 +12,7 @@ using System.Windows.Media;
using Debugger;
using Debugger.AddIn.TreeModel;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui.Pads;
using ICSharpCode.SharpDevelop.Services;
namespace ICSharpCode.SharpDevelop.Gui.Pads
@ -21,10 +22,12 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -21,10 +22,12 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
/// </summary>
public partial class CallStackPadContent : UserControl
{
CallStackPad callStackPad;
Process debuggedProcess;
public CallStackPadContent()
public CallStackPadContent(CallStackPad pad)
{
this.callStackPad = pad;
InitializeComponent();
view.ContextMenu = CreateMenu();
@ -40,7 +43,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -40,7 +43,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
extMethodsItem.IsChecked = DebuggingOptions.Instance.ShowExternalMethods;
extMethodsItem.Click += delegate {
extMethodsItem.IsChecked = DebuggingOptions.Instance.ShowExternalMethods = !DebuggingOptions.Instance.ShowExternalMethods;
CallStackPad.InvalidateCallstackPad();
callStackPad.InvalidatePad();
};
MenuItem moduleItem = new MenuItem();
@ -49,7 +52,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -49,7 +52,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
moduleItem.Click += delegate {
moduleItem.IsChecked = DebuggingOptions.Instance.ShowModuleNames = !DebuggingOptions.Instance.ShowModuleNames;
((GridView)view.View).Columns[0].Width = DebuggingOptions.Instance.ShowModuleNames ? 100d : 0d;
CallStackPad.InvalidateCallstackPad();
callStackPad.InvalidatePad();
};
MenuItem argNamesItem = new MenuItem();
@ -57,7 +60,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -57,7 +60,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
argNamesItem.IsChecked = DebuggingOptions.Instance.ShowArgumentNames;
argNamesItem.Click += delegate {
argNamesItem.IsChecked = DebuggingOptions.Instance.ShowArgumentNames = !DebuggingOptions.Instance.ShowArgumentNames;
CallStackPad.InvalidateCallstackPad();
callStackPad.InvalidatePad();
};
MenuItem argValuesItem = new MenuItem();
@ -65,7 +68,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -65,7 +68,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
argValuesItem.IsChecked = DebuggingOptions.Instance.ShowArgumentValues;
argValuesItem.Click += delegate {
argValuesItem.IsChecked = DebuggingOptions.Instance.ShowArgumentValues = !DebuggingOptions.Instance.ShowArgumentValues;
CallStackPad.InvalidateCallstackPad();
callStackPad.InvalidatePad();
};
MenuItem lineItem = new MenuItem();
@ -74,7 +77,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -74,7 +77,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
lineItem.Click += delegate {
lineItem.IsChecked = DebuggingOptions.Instance.ShowLineNumbers = !DebuggingOptions.Instance.ShowLineNumbers;
((GridView)view.View).Columns[2].Width = DebuggingOptions.Instance.ShowLineNumbers ? 50d : 0d;
CallStackPad.InvalidateCallstackPad();
callStackPad.InvalidatePad();
};
return new ContextMenu() {
@ -98,12 +101,12 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -98,12 +101,12 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
if (debuggedProcess != null) {
debuggedProcess.Paused += debuggedProcess_Paused;
}
CallStackPad.InvalidateCallstackPad();
callStackPad.InvalidatePad();
}
void debuggedProcess_Paused(object sender, ProcessEventArgs e)
{
CallStackPad.InvalidateCallstackPad();
callStackPad.InvalidatePad();
}
void View_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
@ -150,13 +153,13 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -150,13 +153,13 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
var items = new ObservableCollection<CallStackItem>();
using(new PrintTimes("Callstack refresh")) {
bool showExternalMethods = DebuggingOptions.Instance.ShowExternalMethods;
bool previousItemIsExternalMethod = false;
bool previousItemIsExternalMethod = false;
debuggedProcess.EnqueueForEach(
Dispatcher,
debuggedProcess.SelectedThread.GetCallstack(100),
f => items.AddIfNotNull(CreateItem(f, showExternalMethods, ref previousItemIsExternalMethod))
);
debuggedProcess.EnqueueForEach(
Dispatcher,
debuggedProcess.SelectedThread.GetCallstack(100),
f => items.AddIfNotNull(CreateItem(f, showExternalMethods, ref previousItemIsExternalMethod))
);
}
view.ItemsSource = items;
}
@ -287,7 +290,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -287,7 +290,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
protected override void InitializeComponents()
{
callStackList = new CallStackPadContent();
callStackList = new CallStackPadContent(this);
}
protected override void SelectProcess(Process process)
@ -299,11 +302,5 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -299,11 +302,5 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
{
callStackList.RefreshPad();
}
public static void InvalidateCallstackPad()
{
if (instance != null)
instance.InvalidatePad();
}
}
}

Loading…
Cancel
Save