Browse Source

Add TextView.InvalidateLayer.

Enabled bracket highlighting.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4842 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
984b1ab9e1
  1. 10
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/BracketHighlightRenderer.cs
  2. 8
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  3. 23
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs

10
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/BracketHighlightRenderer.cs

@ -4,9 +4,11 @@
// <owner name="Siegfried Pammer" email="siegfriedpammer@gmail.com"/> // <owner name="Siegfried Pammer" email="siegfriedpammer@gmail.com"/>
// <version>$Revision$</version> // <version>$Revision$</version>
// </file> // </file>
using ICSharpCode.AvalonEdit.Document;
using System; using System;
using System.Diagnostics;
using System.Windows.Media; using System.Windows.Media;
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Rendering; using ICSharpCode.AvalonEdit.Rendering;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
@ -21,9 +23,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
public void SetHighlight(BracketSearchResult result) public void SetHighlight(BracketSearchResult result)
{ {
this.result = result; this.result = result;
var layer = textView.GetKnownLayer(Layer); textView.InvalidateLayer(this.Layer);
if (layer != null)
layer.InvalidateVisual();
} }
public BracketHighlightRenderer(TextView textView) public BracketHighlightRenderer(TextView textView)
@ -35,7 +35,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
this.borderPen.Freeze(); this.borderPen.Freeze();
this.textView = textView; this.textView = textView;
//this.textView.BackgroundRenderers.Add(this); this.textView.BackgroundRenderers.Add(this);
} }
public KnownLayer Layer { public KnownLayer Layer {

8
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs

@ -299,10 +299,10 @@ namespace ICSharpCode.AvalonEdit.AddIn
if (activeAdapter.Language != null) { if (activeAdapter.Language != null) {
var bracketSearchResult = activeAdapter.Language.BracketSearcher.SearchBracket(activeAdapter.Document, activeAdapter.Caret.Offset); var bracketSearchResult = activeAdapter.Language.BracketSearcher.SearchBracket(activeAdapter.Document, activeAdapter.Caret.Offset);
// if (activeAdapter == primaryTextEditorAdapter) if (activeAdapter == primaryTextEditorAdapter)
// this.primaryBracketRenderer.SetHighlight(bracketSearchResult); this.primaryBracketRenderer.SetHighlight(bracketSearchResult);
// else else
// this.secondaryBracketRenderer.SetHighlight(bracketSearchResult); this.secondaryBracketRenderer.SetHighlight(bracketSearchResult);
} }
StatusBarService.SetCaretPosition(caret.Column, caret.Line, caret.Column); StatusBarService.SetCaretPosition(caret.Column, caret.Line, caret.Column);

23
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs

@ -247,19 +247,6 @@ namespace ICSharpCode.AvalonEdit.Rendering
get { return layers; } get { return layers; }
} }
/// <summary>
/// Retrieves a known layer from the Layers collection.
/// </summary>
public UIElement GetKnownLayer(KnownLayer knownLayer)
{
foreach (UIElement layer in layers) {
LayerPosition p = LayerPosition.GetLayerPosition(layer);
if (p != null && p.KnownLayer == knownLayer)
return layer;
}
return null;
}
/// <summary> /// <summary>
/// Inserts a new layer at a position specified relative to an existing layer. /// Inserts a new layer at a position specified relative to an existing layer.
/// </summary> /// </summary>
@ -379,6 +366,16 @@ namespace ICSharpCode.AvalonEdit.Rendering
} }
} }
/// <summary>
/// Causes a known layer to redraw.
/// This method does not invalidate visual lines;
/// use the <see cref="Redraw()"/> method to do that.
/// </summary>
public void InvalidateLayer(KnownLayer knownLayer)
{
InvalidateMeasure(DispatcherPriority.Normal);
}
/// <summary> /// <summary>
/// Causes the text editor to redraw all lines overlapping with the specified segment. /// Causes the text editor to redraw all lines overlapping with the specified segment.
/// Does nothing if segment is null. /// Does nothing if segment is null.

Loading…
Cancel
Save