Browse Source

Give bookmarks z-order; ensure that CurrentLineBookmark takes preference over breakpoints.

pull/2/head
Daniel Grunwald 15 years ago
parent
commit
60b0cb6831
  1. 38
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarMargin.cs
  2. 4
      src/Main/Base/Project/Src/Bookmarks/BookmarkBase.cs
  3. 8
      src/Main/Base/Project/Src/Bookmarks/ClassMemberBookmark.cs
  4. 5
      src/Main/Base/Project/Src/Bookmarks/IBookmarkMargin.cs
  5. 4
      src/Main/Base/Project/Src/Services/Debugger/CurrentLineBookmark.cs

38
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarMargin.cs

@ -79,8 +79,9 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -79,8 +79,9 @@ namespace ICSharpCode.AvalonEdit.AddIn
Dictionary<int, IBookmark> bookmarkDict = new Dictionary<int, IBookmark>();
foreach (IBookmark bm in manager.Bookmarks) {
int line = bm.LineNumber;
if (!bookmarkDict.ContainsKey(line))
bookmarkDict.Add(line, bm);
IBookmark existingBookmark;
if (!bookmarkDict.TryGetValue(line, out existingBookmark) || bm.ZOrder > existingBookmark.ZOrder)
bookmarkDict[line] = bm;
}
Size pixelSize = PixelSnapHelpers.GetPixelSize(this);
foreach (VisualLine line in textView.VisualLines) {
@ -113,15 +114,13 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -113,15 +114,13 @@ namespace ICSharpCode.AvalonEdit.AddIn
base.OnMouseDown(e);
int line = GetLineFromMousePosition(e);
if (!e.Handled && line > 0) {
foreach (IBookmark bm in manager.Bookmarks) {
if (bm.LineNumber == line) {
bm.MouseDown(e);
if (e.Handled)
return;
IBookmark bm = GetBookmarkFromLine(line);
if (bm != null) {
bm.MouseDown(e);
if (!e.Handled) {
if (e.ChangedButton == MouseButton.Left && bm.CanDragDrop && CaptureMouse()) {
StartDragDrop(bm, e);
e.Handled = true;
return;
}
}
}
@ -131,6 +130,18 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -131,6 +130,18 @@ namespace ICSharpCode.AvalonEdit.AddIn
e.Handled = true;
}
IBookmark GetBookmarkFromLine(int line)
{
IBookmark result = null;
foreach (IBookmark bm in manager.Bookmarks) {
if (bm.LineNumber == line) {
if (result == null || bm.ZOrder > result.ZOrder)
result = bm;
}
}
return result;
}
protected override void OnLostMouseCapture(MouseEventArgs e)
{
CancelDragDrop();
@ -206,12 +217,11 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -206,12 +217,11 @@ namespace ICSharpCode.AvalonEdit.AddIn
CancelDragDrop();
}
if (!e.Handled && line != 0) {
foreach (IBookmark bm in manager.Bookmarks) {
if (bm.LineNumber == line) {
bm.MouseUp(e);
if (e.Handled)
return;
}
IBookmark bm = GetBookmarkFromLine(line);
if (bm != null) {
bm.MouseUp(e);
if (e.Handled)
return;
}
if (e.ChangedButton == MouseButton.Left && TextView != null) {
// no bookmark on the line: create a new breakpoint

4
src/Main/Base/Project/Src/Bookmarks/BookmarkBase.cs

@ -128,6 +128,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -128,6 +128,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
}
}
public virtual int ZOrder {
get { return 0; }
}
/// <summary>
/// Gets if the bookmark can be toggled off using the 'set/unset bookmark' command.
/// </summary>

8
src/Main/Base/Project/Src/Bookmarks/ClassMemberBookmark.cs

@ -54,6 +54,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -54,6 +54,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
{
}
int IBookmark.ZOrder {
get { return -10; }
}
bool IBookmark.CanDragDrop {
get { return false; }
}
@ -108,6 +112,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -108,6 +112,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
{
}
int IBookmark.ZOrder {
get { return -10; }
}
bool IBookmark.CanDragDrop {
get { return false; }
}

5
src/Main/Base/Project/Src/Bookmarks/IBookmarkMargin.cs

@ -38,6 +38,11 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -38,6 +38,11 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
/// </summary>
IImage Image { get; }
/// <summary>
/// Gets the Z-Order of the bookmark icon.
/// </summary>
int ZOrder { get; }
/// <summary>
/// Handles the mouse down event.
/// </summary>

4
src/Main/Base/Project/Src/Services/Debugger/CurrentLineBookmark.cs

@ -68,6 +68,10 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -68,6 +68,10 @@ namespace ICSharpCode.SharpDevelop.Debugging
}
}
public override int ZOrder {
get { return 100; }
}
public CurrentLineBookmark(FileName fileName, Location location) : base(fileName, location)
{
this.IsSaved = false;

Loading…
Cancel
Save