Browse Source

EnhancedScrollBar: put TrackAdorner into the track grid instead of using the adorner layer. This prevents the issue markers from getting lost when switching view contents.

pull/45/merge
Daniel Grunwald 12 years ago
parent
commit
11f74b1d1e
  1. 25
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/EnhancedScrollBar.cs

25
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/EnhancedScrollBar.cs

@ -83,16 +83,19 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -83,16 +83,19 @@ namespace ICSharpCode.AvalonEdit.AddIn
Grid grid = VisualTreeHelper.GetParent(track) as Grid;
if (grid != null) {
trackBackground = new TrackBackground(this);
trackAdorner = new TrackAdorner(this);
Grid.SetColumn(trackBackground, Grid.GetColumn(track));
Grid.SetRow(trackBackground, Grid.GetRow(track));
Grid.SetColumnSpan(trackBackground, Grid.GetColumnSpan(track));
Grid.SetRowSpan(trackBackground, Grid.GetRowSpan(track));
Grid.SetColumn(trackAdorner, Grid.GetColumn(track));
Grid.SetRow(trackAdorner, Grid.GetRow(track));
Grid.SetColumnSpan(trackAdorner, Grid.GetColumnSpan(track));
Grid.SetRowSpan(trackAdorner, Grid.GetRowSpan(track));
Panel.SetZIndex(track, 1);
Panel.SetZIndex(trackAdorner, 2);
grid.Children.Add(trackBackground);
}
AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(track);
if (adornerLayer != null) {
trackAdorner = new TrackAdorner(this, adornerLayer, track);
grid.Children.Add(trackAdorner);
}
}
#endregion
@ -205,8 +208,9 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -205,8 +208,9 @@ namespace ICSharpCode.AvalonEdit.AddIn
#endregion
#region TrackAdorner
sealed class TrackAdorner : Adorner
sealed class TrackAdorner : FrameworkElement
{
#region TriangleGeometry
static readonly StreamGeometry triangleGeometry = CreateTriangleGeometry();
static StreamGeometry CreateTriangleGeometry()
@ -223,29 +227,28 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -223,29 +227,28 @@ namespace ICSharpCode.AvalonEdit.AddIn
triangleGeometry.Freeze();
return triangleGeometry;
}
#endregion
readonly AdornerLayer adornerLayer;
readonly TextEditor editor;
readonly TextMarkerService textMarkerService;
public TrackAdorner(EnhancedScrollBar enhanchedScrollBar, AdornerLayer adornerLayer, UIElement adornedElement)
: base(adornedElement)
public TrackAdorner(EnhancedScrollBar enhanchedScrollBar)
{
this.adornerLayer = adornerLayer;
this.editor = enhanchedScrollBar.editor;
this.textMarkerService = enhanchedScrollBar.textMarkerService;
this.Cursor = Cursors.Hand;
this.ToolTip = string.Empty;
adornerLayer.Add(this);
textMarkerService.RedrawRequested += textMarkerService_RedrawRequested;
}
public void Remove()
{
textMarkerService.RedrawRequested -= textMarkerService_RedrawRequested;
adornerLayer.Remove(this);
Grid grid = (Grid)VisualTreeHelper.GetParent(this);
grid.Children.Remove(this);
}
void textMarkerService_RedrawRequested(object sender, EventArgs e)

Loading…
Cancel
Save