Browse Source
* Update OpenGlControlBase.cs
* Update TransitioningContentControl.cs
* bug fix and add test
pull/13644/head
laolarou
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
30 additions and
0 deletions
-
src/Avalonia.Controls/TransitioningContentControl.cs
-
tests/Avalonia.Controls.UnitTests/TransitioningContentControlTests.cs
|
|
|
@ -15,6 +15,7 @@ namespace Avalonia.Controls; |
|
|
|
public class TransitioningContentControl : ContentControl |
|
|
|
{ |
|
|
|
private CancellationTokenSource? _currentTransition; |
|
|
|
private ContentPresenter? _lastPresenter; |
|
|
|
private ContentPresenter? _presenter2; |
|
|
|
private bool _isFirstFull; |
|
|
|
private bool _shouldAnimate; |
|
|
|
@ -133,8 +134,15 @@ public class TransitioningContentControl : ContentControl |
|
|
|
} |
|
|
|
|
|
|
|
var currentPresenter = _isFirstFull ? _presenter2 : Presenter; |
|
|
|
|
|
|
|
if (_lastPresenter != null && |
|
|
|
_lastPresenter != currentPresenter && |
|
|
|
_lastPresenter.Content == Content) |
|
|
|
_lastPresenter.Content = null; |
|
|
|
|
|
|
|
currentPresenter.Content = Content; |
|
|
|
currentPresenter.IsVisible = true; |
|
|
|
_lastPresenter = currentPresenter; |
|
|
|
|
|
|
|
_isFirstFull = !_isFirstFull; |
|
|
|
|
|
|
|
|
|
|
|
@ -242,6 +242,28 @@ namespace Avalonia.Controls.UnitTests |
|
|
|
Assert.Equal(target.LogicalChildren[0], childControl); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Old_Content_Should_Be_Null_When_New_Content_Is_Old_one() |
|
|
|
{ |
|
|
|
using var app = Start(); |
|
|
|
var (target, transition) = CreateTarget(""); |
|
|
|
var presenter2 = GetContentPresenters2(target); |
|
|
|
target.PageTransition = null; |
|
|
|
|
|
|
|
var childControl = new Control(); |
|
|
|
target.Presenter!.Content = childControl; |
|
|
|
|
|
|
|
const string fakePage1 = "fakePage1"; |
|
|
|
const string fakePage2 = "fakePage2"; |
|
|
|
|
|
|
|
target.Presenter!.Content = fakePage1; |
|
|
|
target.Presenter!.Content = fakePage2; |
|
|
|
target.Presenter!.Content = fakePage1; |
|
|
|
|
|
|
|
Assert.Equal(fakePage1, target.Presenter!.Content); |
|
|
|
Assert.Equal(null, presenter2.Content); |
|
|
|
} |
|
|
|
|
|
|
|
private static IDisposable Start() |
|
|
|
{ |
|
|
|
return UnitTestApplication.Start( |
|
|
|
|