Browse Source

fix ImmediateRenderer invalidation for controls moved with RenderTransform issue #1998

pull/2002/head
Andrey Kunchev 8 years ago
parent
commit
03384d3b5e
  1. 10
      src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs

10
src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs

@ -23,6 +23,7 @@ namespace Avalonia.Rendering
private readonly IVisual _root;
private readonly IRenderRoot _renderRoot;
private IRenderTarget _renderTarget;
private Rect _lastPaintBounds;
/// <summary>
/// Initializes a new instance of the <see cref="ImmediateRenderer"/> class.
@ -45,6 +46,8 @@ namespace Avalonia.Rendering
/// <inheritdoc/>
public void Paint(Rect rect)
{
_lastPaintBounds = rect;
if (_renderTarget == null)
{
_renderTarget = ((IRenderRoot)_root).CreateRenderTarget();
@ -158,6 +161,13 @@ namespace Avalonia.Rendering
if (m.HasValue)
{
var bounds = new Rect(visual.Bounds.Size).TransformToAABB(m.Value);
if (_lastPaintBounds != default)
{
_renderRoot?.Invalidate(_lastPaintBounds);
_lastPaintBounds = default;
}
_renderRoot?.Invalidate(bounds);
}
}

Loading…
Cancel
Save