From 2f4b128d25ac7e3fb60a42b60708a9261f276c67 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Tue, 18 Oct 2011 21:44:56 +0200 Subject: [PATCH] fix rendering issues in SearchResultBackgroundRenderer, if results have length 0. Make MarkerBrush customizable --- .../Search/SearchResultBackgroundRenderer.cs | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Search/SearchResultBackgroundRenderer.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Search/SearchResultBackgroundRenderer.cs index 9605b06846..5aa88b122b 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Search/SearchResultBackgroundRenderer.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Search/SearchResultBackgroundRenderer.cs @@ -29,6 +29,23 @@ namespace ICSharpCode.AvalonEdit.Search } } + public SearchResultBackgroundRenderer() + { + markerBrush = Brushes.LightGreen; + markerPen = new Pen(markerBrush, 1); + } + + Brush markerBrush; + Pen markerPen; + + public Brush MarkerBrush { + get { return markerBrush; } + set { + this.markerBrush = value; + markerPen = new Pen(markerBrush, 1); + } + } + public void Draw(TextView textView, DrawingContext drawingContext) { if (textView == null) @@ -48,14 +65,12 @@ namespace ICSharpCode.AvalonEdit.Search foreach (SearchResult result in currentResults.FindOverlappingSegments(viewStart, viewEnd - viewStart)) { BackgroundGeometryBuilder geoBuilder = new BackgroundGeometryBuilder(); - geoBuilder.AlignToWholePixels = true; + geoBuilder.AlignToMiddleOfPixels = true; geoBuilder.CornerRadius = 3; geoBuilder.AddSegment(textView, result); Geometry geometry = geoBuilder.CreateGeometry(); if (geometry != null) { - SolidColorBrush brush = new SolidColorBrush(Colors.LightGreen); - brush.Freeze(); - drawingContext.DrawGeometry(brush, null, geometry); + drawingContext.DrawGeometry(markerBrush, markerPen, geometry); } } }