Browse Source

Merge pull request #6039 from MarchingCube/fix-textpresenter-caretbrush

Fix problems with mutable brush being passed to an immutable pen.
release/0.10.7
Steven Kirk 5 years ago
committed by Dan Walmsley
parent
commit
4fe4f3e6b0
  1. 15
      src/Avalonia.Controls/Presenters/TextPresenter.cs
  2. 3
      src/Avalonia.Visuals/Media/Immutable/ImmutablePen.cs

15
src/Avalonia.Controls/Presenters/TextPresenter.cs

@ -361,9 +361,9 @@ namespace Avalonia.Controls.Presenters
RenderInternal(context);
if (selectionStart == selectionEnd)
if (selectionStart == selectionEnd && _caretBlink)
{
var caretBrush = CaretBrush;
var caretBrush = CaretBrush?.ToImmutable();
if (caretBrush is null)
{
@ -382,13 +382,10 @@ namespace Avalonia.Controls.Presenters
}
}
if (_caretBlink)
{
var (p1, p2) = GetCaretPoints();
context.DrawLine(
new ImmutablePen(caretBrush, 1),
p1, p2);
}
var (p1, p2) = GetCaretPoints();
context.DrawLine(
new ImmutablePen(caretBrush, 1),
p1, p2);
}
}

3
src/Avalonia.Visuals/Media/Immutable/ImmutablePen.cs

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
namespace Avalonia.Media.Immutable
{
@ -44,6 +45,8 @@ namespace Avalonia.Media.Immutable
PenLineJoin lineJoin = PenLineJoin.Miter,
double miterLimit = 10.0)
{
Debug.Assert(!(brush is IMutableBrush));
Brush = brush;
Thickness = thickness;
LineCap = lineCap;

Loading…
Cancel
Save