diff --git a/src/Avalonia.Controls/Control.cs b/src/Avalonia.Controls/Control.cs index 8c6ac0718a..8bb0774655 100644 --- a/src/Avalonia.Controls/Control.cs +++ b/src/Avalonia.Controls/Control.cs @@ -200,7 +200,6 @@ namespace Avalonia.Controls { base.OnAttachedToVisualTreeCore(e); - InvalidateFlowDirection(); InitializeIfNeeded(); } @@ -210,6 +209,14 @@ namespace Avalonia.Controls base.OnDetachedFromVisualTreeCore(e); } + /// + protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) + { + base.OnAttachedToVisualTree(e); + + InvalidateFlowDirection(); + } + /// protected override void OnGotFocus(GotFocusEventArgs e) { diff --git a/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs b/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs index 23016de148..d92919884b 100644 --- a/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs +++ b/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs @@ -285,6 +285,12 @@ namespace Avalonia.Rendering renderTransform = (-offset) * visual.RenderTransform.Value * (offset); } + if (visual.IsMirrorTransform) + { + var mirrorMatrix = new Matrix(-1.0, 0.0, 0.0, 1.0, visual.Bounds.Width, 0); + renderTransform *= mirrorMatrix; + } + m = renderTransform * m; if (clipToBounds)