Browse Source

AvalonEdit: allow setting the caret color.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4233 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
c62cfbcad7
  1. 14
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Caret.cs
  2. 8
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/CaretLayer.cs
  3. 20
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs

14
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Caret.cs

@ -5,15 +5,17 @@ @@ -5,15 +5,17 @@
// <version>$Revision$</version>
// </file>
using ICSharpCode.AvalonEdit.Utils;
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Documents;
using System.Windows.Media;
using System.Windows.Media.TextFormatting;
using System.Windows.Threading;
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Rendering;
using ICSharpCode.AvalonEdit.Utils;
namespace ICSharpCode.AvalonEdit.Editing
{
@ -24,7 +26,7 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -24,7 +26,7 @@ namespace ICSharpCode.AvalonEdit.Editing
{
readonly TextArea textArea;
readonly TextView textView;
CaretLayer caretAdorner;
readonly CaretLayer caretAdorner;
bool visible;
internal Caret(TextArea textArea)
@ -346,5 +348,13 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -346,5 +348,13 @@ namespace ICSharpCode.AvalonEdit.Editing
caretAdorner.Hide();
}
}
/// <summary>
/// Gets/Sets the color of the caret.
/// </summary>
public Brush CaretBrush {
get { return caretAdorner.CaretBrush; }
set { caretAdorner.CaretBrush = value; }
}
}
}

8
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/CaretLayer.cs

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Animation;
@ -65,11 +66,16 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -65,11 +66,16 @@ namespace ICSharpCode.AvalonEdit.Editing
BeginAnimation(OpacityProperty, null);
}
internal Brush CaretBrush;
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
if (isVisible) {
drawingContext.DrawRectangle(Brushes.Black, null,
Brush caretBrush = this.CaretBrush;
if (caretBrush == null)
caretBrush = (Brush)textView.GetValue(TextBlock.ForegroundProperty);
drawingContext.DrawRectangle(caretBrush, null,
new Rect(caretRectangle.X - textView.HorizontalOffset,
caretRectangle.Y - textView.VerticalOffset,
caretRectangle.Width,

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

@ -304,6 +304,11 @@ namespace ICSharpCode.AvalonEdit.Rendering @@ -304,6 +304,11 @@ namespace ICSharpCode.AvalonEdit.Rendering
{
return layers[index];
}
/// <inheritdoc/>
protected override System.Collections.IEnumerator LogicalChildren {
get { return layers.GetEnumerator(); }
}
#endregion
#region Redraw methods / VisualLine invalidation
@ -1456,5 +1461,20 @@ namespace ICSharpCode.AvalonEdit.Rendering @@ -1456,5 +1461,20 @@ namespace ICSharpCode.AvalonEdit.Rendering
throw ThrowUtil.NoDocumentAssigned();
return heightTree.GetLineByVisualPosition(visualTop);
}
/// <inheritdoc/>
protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
{
base.OnPropertyChanged(e);
if (e.Property == Control.ForegroundProperty
|| e.Property == Control.FontFamilyProperty
|| e.Property == Control.FontSizeProperty
|| e.Property == Control.FontStretchProperty
|| e.Property == Control.FontStyleProperty
|| e.Property == Control.FontWeightProperty)
{
Redraw();
}
}
}
}

Loading…
Cancel
Save