From cec07e78ffc35238436e90d5aa4e801087337666 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sun, 22 Oct 2023 10:58:07 +0200 Subject: [PATCH] QskSkinnable::runnigHintAnimator added --- src/controls/QskPopup.cpp | 9 ++------- src/controls/QskSkinnable.cpp | 17 +++++++++++++++++ src/controls/QskSkinnable.h | 3 +++ 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/controls/QskPopup.cpp b/src/controls/QskPopup.cpp index bef48146..54cd4060 100644 --- a/src/controls/QskPopup.cpp +++ b/src/controls/QskPopup.cpp @@ -10,6 +10,7 @@ #include "QskWindow.h" #include "QskEvent.h" #include "QskPlatform.h" +#include "QskHintAnimator.h" #include @@ -239,13 +240,7 @@ bool QskPopup::isOpen() const bool QskPopup::isTransitioning() const { - if ( m_data->transitionAspect.value() == 0 ) - return false; - - QskSkinHintStatus status; - (void) effectiveSkinHint( m_data->transitionAspect, &status ); - - return status.source == QskSkinHintStatus::Animator; + return runningHintAnimator( m_data->transitionAspect ) != nullptr; } QRectF QskPopup::overlayRect() const diff --git a/src/controls/QskSkinnable.cpp b/src/controls/QskSkinnable.cpp index 03b9139c..e82f51b3 100644 --- a/src/controls/QskSkinnable.cpp +++ b/src/controls/QskSkinnable.cpp @@ -988,6 +988,23 @@ bool QskSkinnable::moveSkinHint( QskAspect aspect, const QVariant& value ) return moveSkinHint( aspect, effectiveSkinHint( aspect ), value ); } +const QskHintAnimator* QskSkinnable::runningHintAnimator( + QskAspect aspect, int index ) const +{ + const auto& animators = m_data->animators; + + if ( animators.isEmpty() ) + return nullptr; + + aspect = qskAnimatorAspect( aspect ); + + auto animator = animators.animator( aspect, index ); + if ( animator == nullptr && index >= 0 ) + animator = animators.animator( aspect, -1 ); + + return animator; +} + QVariant QskSkinnable::animatedHint( QskAspect aspect, QskSkinHintStatus* status ) const { diff --git a/src/controls/QskSkinnable.h b/src/controls/QskSkinnable.h index 51d2f1a7..94886960 100644 --- a/src/controls/QskSkinnable.h +++ b/src/controls/QskSkinnable.h @@ -25,6 +25,7 @@ class QQuickItem; class QskArcMetrics; class QskControl; class QskAnimationHint; +class QskHintAnimator; class QskColorFilter; class QskBoxShapeMetrics; class QskBoxBorderMetrics; @@ -262,6 +263,8 @@ class QSK_EXPORT QskSkinnable bool startHintTransitions( const QVector< QskAspect::Subcontrol >&, QskAspect::States, QskAspect::States, int index = -1 ); + const QskHintAnimator* runningHintAnimator( QskAspect, int index = -1 ) const; + protected: virtual void updateNode( QSGNode* ); virtual bool isTransitionAccepted( QskAspect ) const;