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

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

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

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

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

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

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

Loading…
Cancel
Save