Browse Source

add SelectedFrameBookmark

pull/15/head
Eusebiu Marcu 15 years ago
parent
commit
7e3a1fa4f0
  1. 1
      src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.csproj
  2. 25
      src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/ParallelStackPad.cs
  3. 18
      src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/ThreadStack.xaml.cs

1
src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.csproj

@ -125,6 +125,7 @@ @@ -125,6 +125,7 @@
</Compile>
<Compile Include="Pads\ParallelPad\ParallelStackPad.cs" />
<Compile Include="Pads\ParallelPad\ParallelStacksGraph.cs" />
<Compile Include="Pads\ParallelPad\SelectedFrameBookmark.cs" />
<Compile Include="Pads\ParallelPad\ThreadStack.xaml.cs">
<DependentUpon>ThreadStack.xaml</DependentUpon>
<SubType>Code</SubType>

25
src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/ParallelStackPad.cs

@ -13,9 +13,13 @@ using System.Windows.Media; @@ -13,9 +13,13 @@ using System.Windows.Media;
using Debugger;
using Debugger.AddIn.Pads.ParallelPad;
using Debugger.AddIn.TreeModel;
using ICSharpCode.AvalonEdit.Rendering;
using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui.Pads;
namespace ICSharpCode.SharpDevelop.Gui.Pads
@ -154,6 +158,9 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -154,6 +158,9 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
{
currentThreadStacks.Clear();
selectedFrame = null;
// remove all
BookmarkManager.RemoveAll(b => b is SelectedFrameBookmark);
}
private void debuggedProcess_Paused(object sender, ProcessEventArgs e)
@ -436,7 +443,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -436,7 +443,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
private void CreateThreadStack(Thread thread)
{
var items = CreateItems(thread);
if (items.Count == 0)
if (items == null || items.Count == 0)
return;
ThreadStack threadStack = new ThreadStack();
@ -555,9 +562,21 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -555,9 +562,21 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
return obj;
}
private void ToggleSelectedFrameBookmark(Location location)
{
// remove all
BookmarkManager.RemoveAll(b => b is SelectedFrameBookmark);
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveContent as ITextEditorProvider;
if (provider != null) {
ITextEditor editor = provider.TextEditor;
BookmarkManager.AddMark(new SelectedFrameBookmark(editor.FileName, location));
}
}
private void OnThreadStackSelected(object sender, EventArgs e)
{
foreach (var ts in this.currentThreadStacks) {
foreach (var ts in this.currentThreadStacks.FindAll(ts => ts.ThreadStackChildren == null)) {
if (ts.IsSelected)
ts.IsSelected = false;
ts.ClearImages();
@ -568,6 +587,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -568,6 +587,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
{
selectedFrame = e.Item;
ToggleSelectedFrameBookmark(e.Location);
if (isMethodView)
RefreshPad();
}

18
src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/ThreadStack.xaml.cs

@ -11,6 +11,7 @@ using System.Windows.Input; @@ -11,6 +11,7 @@ using System.Windows.Input;
using System.Windows.Media;
using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui.Pads;
@ -23,9 +24,15 @@ namespace Debugger.AddIn.Pads.ParallelPad @@ -23,9 +24,15 @@ namespace Debugger.AddIn.Pads.ParallelPad
private set;
}
public FrameSelectedEventArgs(StackFrame item)
public Location Location {
get;
private set;
}
public FrameSelectedEventArgs(StackFrame item, Location location)
{
Item = item;
Location = location;
}
}
@ -198,13 +205,14 @@ namespace Debugger.AddIn.Pads.ParallelPad @@ -198,13 +205,14 @@ namespace Debugger.AddIn.Pads.ParallelPad
SourcecodeSegment nextStatement = frame.NextStatement;
if (nextStatement != null) {
var location = new Location(nextStatement.StartColumn, nextStatement.StartLine);
FileService.JumpToFilePosition(
nextStatement.Filename, nextStatement.StartLine, nextStatement.StartColumn);
nextStatement.Filename, location.Line, location.Column);
if (FrameSelected != null)
FrameSelected(this, new FrameSelectedEventArgs(frame, location));
}
if (FrameSelected != null)
FrameSelected(this, new FrameSelectedEventArgs(frame));
break;
}
}

Loading…
Cancel
Save