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