From 925613b81c97dc57b6680e37939a57741cc7d82e Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Fri, 19 Apr 2019 17:04:36 +0200 Subject: [PATCH] animatedValue fixed --- src/controls/QskSkinnable.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/controls/QskSkinnable.cpp b/src/controls/QskSkinnable.cpp index fa162579..60489f2b 100644 --- a/src/controls/QskSkinnable.cpp +++ b/src/controls/QskSkinnable.cpp @@ -395,8 +395,7 @@ QskAnimationHint QskSkinnable::effectiveAnimation( return hint; } - const QskSkin* skin = effectiveSkin(); - if ( skin ) + if ( auto skin = effectiveSkin() ) { const auto a = skin->hintTable().resolvedAnimator( aspect, hint ); if ( a.isAnimator() ) @@ -485,13 +484,24 @@ QVariant QskSkinnable::animatedValue( if ( aspect.state() == QskAspect::NoState ) aspect = aspect | skinState(); + const auto aspect0 = aspect; + Q_FOREVER { - v = QskSkinTransition::animatedHint( control->window(), aspect ); - if ( v.isValid() || aspect.state() == QskAspect::NoState ) + Q_FOREVER + { + v = QskSkinTransition::animatedHint( control->window(), aspect ); + if ( v.isValid() || aspect.state() == QskAspect::NoState ) + break; + + aspect.clearState( aspect.topState() ); + } + + if ( v.isValid() || aspect.placement() == QskAspect::NoPlacement ) break; - aspect.clearState( aspect.topState() ); + aspect = aspect0; + aspect.setPlacement( QskAspect::NoPlacement ); } } }