From a88a1b7a509179df023c604bea868080429bb13a Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Fri, 30 Jun 2023 14:25:11 +0200 Subject: [PATCH] starting state transitions for specific subcontrols supported --- src/controls/QskSkinnable.cpp | 15 +++++++++++++-- src/controls/QskSkinnable.h | 2 ++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/controls/QskSkinnable.cpp b/src/controls/QskSkinnable.cpp index beb63889..70b238a0 100644 --- a/src/controls/QskSkinnable.cpp +++ b/src/controls/QskSkinnable.cpp @@ -1382,7 +1382,19 @@ void QskSkinnable::setSkinStates( QskAspect::States newStates ) bool QskSkinnable::startHintTransitions( QskAspect::States oldStates, QskAspect::States newStates, int index ) { - if ( !isTransitionAccepted( QskAspect() ) ) + QVector< QskAspect::Subcontrol > subControls; + + if ( const auto control = qskControlCast( owningItem() ) ) + subControls = control->subControls(); + + return startHintTransitions( subControls, oldStates, newStates, index ); +} + +bool QskSkinnable::startHintTransitions( + const QVector< QskAspect::Subcontrol >& subControls, + QskAspect::States oldStates, QskAspect::States newStates, int index ) +{ + if ( !isTransitionAccepted( QskAspect() ) || subControls.isEmpty() ) { // the control does not like any animated transition at the moment return false; @@ -1401,7 +1413,6 @@ bool QskSkinnable::startHintTransitions( const auto primitiveCount = QskAspect::primitiveCount(); - const auto subControls = control->subControls(); for ( const auto subControl : subControls ) { aspect.setSubcontrol( subControl ); diff --git a/src/controls/QskSkinnable.h b/src/controls/QskSkinnable.h index 91c860b9..d8e455a2 100644 --- a/src/controls/QskSkinnable.h +++ b/src/controls/QskSkinnable.h @@ -260,6 +260,8 @@ class QSK_EXPORT QskSkinnable const QskSkinHintTable& hintTable() const; bool startHintTransitions( QskAspect::States, QskAspect::States, int index = -1 ); + bool startHintTransitions( const QVector< QskAspect::Subcontrol >&, + QskAspect::States, QskAspect::States, int index = -1 ); protected: virtual void updateNode( QSGNode* );