resolving loop harmonized with QskSkinHintTable

This commit is contained in:
Uwe Rathmann 2019-04-23 11:34:34 +02:00
parent 54f8591c33
commit b2d9663a20

View File

@ -484,24 +484,31 @@ QVariant QskSkinnable::animatedValue(
if ( aspect.state() == QskAspect::NoState ) if ( aspect.state() == QskAspect::NoState )
aspect = aspect | skinState(); aspect = aspect | skinState();
const auto aspect0 = aspect; const auto a = aspect;
Q_FOREVER Q_FOREVER
{ {
Q_FOREVER v = QskSkinTransition::animatedHint( control->window(), aspect );
{
v = QskSkinTransition::animatedHint( control->window(), aspect );
if ( v.isValid() || aspect.state() == QskAspect::NoState )
break;
aspect.clearState( aspect.topState() ); if ( !v.isValid() )
{
if ( const auto topState = aspect.topState() )
{
aspect.clearState( aspect.topState() );
continue;
}
if ( aspect.placement() )
{
// clear the placement bits and restart
aspect = a;
aspect.setPlacement( QskAspect::NoPlacement );
continue;
}
} }
if ( v.isValid() || aspect.placement() == QskAspect::NoPlacement ) break;
break;
aspect = aspect0;
aspect.setPlacement( QskAspect::NoPlacement );
} }
} }
} }