diff --git a/samples/ControlCatalog/Pages/ScreenPage.cs b/samples/ControlCatalog/Pages/ScreenPage.cs index 14e9587ca4..66e0ae6846 100644 --- a/samples/ControlCatalog/Pages/ScreenPage.cs +++ b/samples/ControlCatalog/Pages/ScreenPage.cs @@ -79,6 +79,6 @@ namespace ControlCatalog.Pages Typeface.Default, 12, Brushes.Green); } - protected override bool ShouldGetInvertedIfRightToLeft() => false; + protected override bool ShouldApplyMirrorTransform() => false; } } diff --git a/src/Avalonia.Controls/Control.cs b/src/Avalonia.Controls/Control.cs index a1b5ced48b..88e14adff1 100644 --- a/src/Avalonia.Controls/Control.cs +++ b/src/Avalonia.Controls/Control.cs @@ -141,7 +141,7 @@ namespace Avalonia.Controls { if (_hasMirrorTransform) { - value = MargeTransforms(MirrorTrasform(), value); + value = MergeTransforms(MirrorTrasform(), value); } base.RenderTransform = value; @@ -357,23 +357,16 @@ namespace Avalonia.Controls private void InvalidateFlowDirection() { - FlowDirection parentFD = FlowDirection.LeftToRight; - FlowDirection thisFD = FlowDirection; - - bool parentShouldGetMirrored = true; - bool thisShouldGetMirrored = ShouldGetInvertedIfRightToLeft(); + bool parentShouldGetMirrored = false; + bool thisShouldGetMirrored = ShouldPresentedMirrored(); var parent = this.FindAncestorOfType(); if (parent != null) { - parentFD = parent.FlowDirection; - parentShouldGetMirrored = parent.ShouldGetInvertedIfRightToLeft(); + parentShouldGetMirrored = parent.ShouldPresentedMirrored(); } - bool shouldBeMirrored = thisFD == FlowDirection.RightToLeft && thisShouldGetMirrored; - bool parentMirrored = parentFD == FlowDirection.RightToLeft && parentShouldGetMirrored; - - bool shouldApplyMirrorTransform = shouldBeMirrored != parentMirrored; + bool shouldApplyMirrorTransform = thisShouldGetMirrored != parentShouldGetMirrored; if (shouldApplyMirrorTransform) { @@ -404,12 +397,12 @@ namespace Avalonia.Controls } var mirrorTransform = MirrorTrasform(); - var rendertransform = RenderTransform; + var renderTransform = RenderTransform; ITransform? finalTransform = mirrorTransform; - if (rendertransform != null) + if (renderTransform != null) { - finalTransform = MargeTransforms(rendertransform, mirrorTransform); + finalTransform = MergeTransforms(renderTransform, mirrorTransform); } base.RenderTransform = finalTransform; @@ -424,9 +417,9 @@ namespace Avalonia.Controls } var mirrorTransform = MirrorTrasform(); - var rendertransform = RenderTransform; + var renderTransform = RenderTransform; - ITransform? finalTransform = MargeTransforms(rendertransform, mirrorTransform); + ITransform? finalTransform = MergeTransforms(renderTransform, mirrorTransform); if (finalTransform!.Value == Matrix.Identity) { finalTransform = null; @@ -438,12 +431,15 @@ namespace Avalonia.Controls /// - /// Determines whether the element should be inverted if the - /// flow direction is RightToLeft + /// Determines whether the element should be presented mirrored + /// by FlowDirection system /// - protected virtual bool ShouldGetInvertedIfRightToLeft() => true; + protected virtual bool ShouldPresentedMirrored() + { + return FlowDirection == FlowDirection.RightToLeft; + } - static ITransform? MargeTransforms(ITransform? iTransform1, ITransform? iTransform2) + static ITransform? MergeTransforms(ITransform? iTransform1, ITransform? iTransform2) { // don't know how to marge ITransform if (iTransform1 is Transform transform1 && iTransform2 is Transform transform2) diff --git a/src/Avalonia.Controls/Image.cs b/src/Avalonia.Controls/Image.cs index 621bf61a1d..2630c55d84 100644 --- a/src/Avalonia.Controls/Image.cs +++ b/src/Avalonia.Controls/Image.cs @@ -128,6 +128,6 @@ namespace Avalonia.Controls } } - protected override bool ShouldGetInvertedIfRightToLeft() => false; + protected override bool ShouldApplyMirrorTransform() => false; } } diff --git a/src/Avalonia.Controls/Presenters/TextPresenter.cs b/src/Avalonia.Controls/Presenters/TextPresenter.cs index 6d566a710c..bb31dcae10 100644 --- a/src/Avalonia.Controls/Presenters/TextPresenter.cs +++ b/src/Avalonia.Controls/Presenters/TextPresenter.cs @@ -799,6 +799,6 @@ namespace Avalonia.Controls.Presenters } } - protected override bool ShouldGetInvertedIfRightToLeft() => false; + protected override bool ShouldApplyMirrorTransform() => false; } } diff --git a/src/Avalonia.Controls/TextBlock.cs b/src/Avalonia.Controls/TextBlock.cs index 376665a5cd..cc20850673 100644 --- a/src/Avalonia.Controls/TextBlock.cs +++ b/src/Avalonia.Controls/TextBlock.cs @@ -613,6 +613,6 @@ namespace Avalonia.Controls InvalidateTextLayout(); } - protected override bool ShouldGetInvertedIfRightToLeft() => false; + protected override bool ShouldApplyMirrorTransform() => false; } } diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs index 4a66b8d6e6..1e1433e20e 100644 --- a/src/Avalonia.Controls/TopLevel.cs +++ b/src/Avalonia.Controls/TopLevel.cs @@ -530,6 +530,6 @@ namespace Avalonia.Controls ITextInputMethodImpl? ITextInputMethodRoot.InputMethod => (PlatformImpl as ITopLevelImplWithTextInputMethod)?.TextInputMethod; - protected override bool ShouldGetInvertedIfRightToLeft() => false; + protected override bool ShouldApplyMirrorTransform() => false; } }