QskSkinnable::runnigHintAnimator added

This commit is contained in:
Uwe Rathmann 2023-10-22 10:58:07 +02:00
parent d4ad863b7a
commit cec07e78ff
3 changed files with 22 additions and 7 deletions

View File

@ -10,6 +10,7 @@
#include "QskWindow.h"
#include "QskEvent.h"
#include "QskPlatform.h"
#include "QskHintAnimator.h"
#include <qpa/qplatformintegration.h>
@ -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

View File

@ -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
{

View File

@ -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;