diff --git a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Dialog.cs b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Dialog.cs index b83888d..f219815 100644 --- a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Dialog.cs +++ b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Dialog.cs @@ -126,7 +126,10 @@ public partial class OverlayDialogHost { _modalCount--; HasModal = _modalCount > 0; - await _maskDisappearAnimation.RunAsync(layer.Mask); + if (!IsAnimationDisabled) + { + await _maskDisappearAnimation.RunAsync(layer.Mask); + } } } @@ -156,7 +159,10 @@ public partial class OverlayDialogHost SetToPosition(control); control.AddHandler(OverlayFeedbackElement.ClosedEvent, OnDialogControlClosing); control.AddHandler(DialogControlBase.LayerChangedEvent, OnDialogLayerChanged); - _maskAppearAnimation.RunAsync(mask); + if (!IsAnimationDisabled) + { + _maskAppearAnimation.RunAsync(mask); + } _modalCount++; HasModal = _modalCount > 0; control.IsClosed = false; diff --git a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Drawer.cs b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Drawer.cs index 1d53231..d7a1bfa 100644 --- a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Drawer.cs +++ b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Drawer.cs @@ -28,13 +28,20 @@ public partial class OverlayDialogHost SetDrawerPosition(control); control.AddHandler(OverlayFeedbackElement.ClosedEvent, OnDrawerControlClosing); var animation = CreateAnimation(control.Bounds.Size, control.Position, true); - if (mask is null) + if (IsAnimationDisabled) { - await animation.RunAsync(control); + ResetDrawerPosition(control, this.Bounds.Size); } else { - await Task.WhenAll(animation.RunAsync(control), _maskAppearAnimation.RunAsync(mask)); + if (mask is null) + { + await animation.RunAsync(control); + } + else + { + await Task.WhenAll(animation.RunAsync(control), _maskAppearAnimation.RunAsync(mask)); + } } } @@ -52,7 +59,14 @@ public partial class OverlayDialogHost HasModal = _modalCount > 0; control.AddHandler(OverlayFeedbackElement.ClosedEvent, OnDrawerControlClosing); var animation = CreateAnimation(control.Bounds.Size, control.Position); - await Task.WhenAll(animation.RunAsync(control), _maskAppearAnimation.RunAsync(mask)); + if (IsAnimationDisabled) + { + ResetDrawerPosition(control, this.Bounds.Size); + } + else + { + await Task.WhenAll(animation.RunAsync(control), _maskAppearAnimation.RunAsync(mask)); + } } private void SetDrawerPosition(DrawerControlBase control) @@ -150,15 +164,20 @@ public partial class OverlayDialogHost _modalCount--; HasModal = _modalCount > 0; layer.Mask.RemoveHandler(PointerPressedEvent, ClickMaskToCloseDialog); - var disappearAnimation = CreateAnimation(control.Bounds.Size, control.Position, false); - await Task.WhenAll(disappearAnimation.RunAsync(control), _maskDisappearAnimation.RunAsync(layer.Mask)); + if (!IsAnimationDisabled) + { + var disappearAnimation = CreateAnimation(control.Bounds.Size, control.Position, false); + await Task.WhenAll(disappearAnimation.RunAsync(control), _maskDisappearAnimation.RunAsync(layer.Mask)); + } Children.Remove(layer.Mask); - } else { - var disappearAnimation = CreateAnimation(control.Bounds.Size, control.Position, false); - await disappearAnimation.RunAsync(control); + if (!IsAnimationDisabled) + { + var disappearAnimation = CreateAnimation(control.Bounds.Size, control.Position, false); + await disappearAnimation.RunAsync(control); + } } Children.Remove(control); ResetZIndices(); diff --git a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Shared.cs b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Shared.cs index f2bdfa9..e993696 100644 --- a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Shared.cs +++ b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Shared.cs @@ -15,7 +15,7 @@ public partial class OverlayDialogHost: Canvas private static readonly Animation _maskAppearAnimation; private static readonly Animation _maskDisappearAnimation; - private readonly List _layers = new List(); + private readonly List _layers = new List(10); private class DialogPair { @@ -43,6 +43,8 @@ public partial class OverlayDialogHost: Canvas get => _hasModal; private set => SetAndRaise(HasModalProperty, ref _hasModal, value); } + + public bool IsAnimationDisabled { get; set; } static OverlayDialogHost() {