diff --git a/src/Avalonia.Controls/TopLevelHost.cs b/src/Avalonia.Controls/TopLevelHost.cs index 86ea95473c..3c7a2f0a98 100644 --- a/src/Avalonia.Controls/TopLevelHost.cs +++ b/src/Avalonia.Controls/TopLevelHost.cs @@ -18,4 +18,6 @@ internal class TopLevelHost : Control { VisualChildren.Add(tl); } -} \ No newline at end of file + + protected override bool BypassFlowDirectionPolicies => true; +} diff --git a/tests/Avalonia.Controls.UnitTests/WindowTests.cs b/tests/Avalonia.Controls.UnitTests/WindowTests.cs index 24b17c46f7..7ab69c8d86 100644 --- a/tests/Avalonia.Controls.UnitTests/WindowTests.cs +++ b/tests/Avalonia.Controls.UnitTests/WindowTests.cs @@ -3,10 +3,9 @@ using System.Collections.Generic; using System.Threading.Tasks; using Avalonia.Media; using Avalonia.Platform; -using Avalonia.Rendering; -using Avalonia.Rendering.Composition; using Avalonia.Threading; using Avalonia.UnitTests; +using Avalonia.VisualTree; using Moq; using Xunit; @@ -689,6 +688,26 @@ namespace Avalonia.Controls.UnitTests Assert.False(window.CanMaximize); } + [Fact] + public void FlowDirection_RTL_Should_Not_Result_In_Mirrored_Host() + { + var windowImpl = MockWindowingPlatform.CreateWindowMock(); + + using var app = UnitTestApplication.Start(TestServices.StyledWindow.With( + windowingPlatform: new MockWindowingPlatform(() => windowImpl.Object))); + + var window = new Window + { + FlowDirection = FlowDirection.RightToLeft + }; + + var visualRoot = window.GetVisualRoot(); + Assert.IsType(visualRoot); + + Assert.False(window.HasMirrorTransform); + Assert.False(visualRoot.HasMirrorTransform); + } + public class SizingTests : ScopedTestBase { [Fact]