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

Loading…
Cancel
Save