From 0a6ed7deb1f61c40df68412a1fe38d7355328fa7 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sun, 17 Jul 2022 15:59:53 +0200 Subject: [PATCH] aspect resolving of animated values fixed ( placement/section bits ) --- src/controls/QskSkinnable.cpp | 43 +++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/src/controls/QskSkinnable.cpp b/src/controls/QskSkinnable.cpp index 45ed2f8f..fc8871f0 100644 --- a/src/controls/QskSkinnable.cpp +++ b/src/controls/QskSkinnable.cpp @@ -904,7 +904,36 @@ QVariant QskSkinnable::animatedValue( But that might change ... */ - v = m_data->animators.currentValue( aspect ); + auto a = aspect; + + Q_FOREVER + { + v = m_data->animators.currentValue( aspect ); + + if ( !v.isValid() ) + { + if ( aspect.placement() ) + { + // clear the placement bits and restart + aspect = a; + aspect.setPlacement( QskAspect::NoPlacement ); + + continue; + } + } + + if ( aspect.section() != QskAspect::Body ) + { + // try to resolve from QskAspect::Body + + a.setSection( QskAspect::Body ); + aspect = a; + + continue; + } + + break; + } } if ( !v.isValid() ) @@ -923,7 +952,7 @@ QVariant QskSkinnable::animatedValue( if ( !aspect.hasStates() ) aspect.setStates( skinStates() ); - const auto a = aspect; + auto a = aspect; Q_FOREVER { @@ -947,6 +976,16 @@ QVariant QskSkinnable::animatedValue( } } + if ( aspect.section() != QskAspect::Body ) + { + // try to resolve from QskAspect::Body + + a.setSection( QskAspect::Body ); + aspect = a; + + continue; + } + break; } }