as the number of local hints is supposed to be small
we don't need to have an extra lookup table for the animator hints.
This commit is contained in:
parent
b6df087756
commit
1adcce7347
|
@ -122,7 +122,6 @@ class QskSkinnable::PrivateData
|
||||||
public:
|
public:
|
||||||
PrivateData():
|
PrivateData():
|
||||||
skinHints( nullptr ),
|
skinHints( nullptr ),
|
||||||
anminatorAspects( nullptr ),
|
|
||||||
skinlet( nullptr ),
|
skinlet( nullptr ),
|
||||||
skinState( QskAspect::NoState ),
|
skinState( QskAspect::NoState ),
|
||||||
hasLocalSkinlet( false )
|
hasLocalSkinlet( false )
|
||||||
|
@ -135,11 +134,9 @@ public:
|
||||||
delete skinlet;
|
delete skinlet;
|
||||||
|
|
||||||
delete skinHints;
|
delete skinHints;
|
||||||
delete anminatorAspects;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unordered_map< QskAspect::Aspect, QVariant >* skinHints;
|
std::unordered_map< QskAspect::Aspect, QVariant >* skinHints;
|
||||||
std::set< QskAspect::Aspect >* anminatorAspects;
|
|
||||||
|
|
||||||
QskHintAnimatorTable animators;
|
QskHintAnimatorTable animators;
|
||||||
|
|
||||||
|
@ -388,14 +385,6 @@ void QskSkinnable::setSkinHint( QskAspect::Aspect aspect, const QVariant& skinHi
|
||||||
{
|
{
|
||||||
it->second = skinHint;
|
it->second = skinHint;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( aspect.isAnimator() )
|
|
||||||
{
|
|
||||||
if ( m_data->anminatorAspects == nullptr )
|
|
||||||
m_data->anminatorAspects = new std::set< QskAspect::Aspect >();
|
|
||||||
|
|
||||||
m_data->anminatorAspects->insert( aspect );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant QskSkinnable::effectiveHint(
|
QVariant QskSkinnable::effectiveHint(
|
||||||
|
@ -757,14 +746,18 @@ void QskSkinnable::setSkinStateFlag( QskAspect::State state, bool on )
|
||||||
QskControl* control = owningControl();
|
QskControl* control = owningControl();
|
||||||
if ( control->window() && control->isInitiallyPainted() )
|
if ( control->window() && control->isInitiallyPainted() )
|
||||||
{
|
{
|
||||||
const auto localAspects = m_data->anminatorAspects;
|
const auto localHints = m_data->skinHints;
|
||||||
|
|
||||||
if ( localAspects )
|
if ( localHints )
|
||||||
{
|
{
|
||||||
for ( const auto aspect : *localAspects )
|
for ( const auto entry : *localHints )
|
||||||
{
|
{
|
||||||
if ( !aspect.state() || aspect.state() == newState )
|
const auto aspect = entry.first;
|
||||||
startTransition( aspect, m_data->skinState, newState );
|
if ( aspect.isAnimator() )
|
||||||
|
{
|
||||||
|
if ( !aspect.state() || aspect.state() == newState )
|
||||||
|
startTransition( aspect, m_data->skinState, newState );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -781,7 +774,7 @@ void QskSkinnable::setSkinStateFlag( QskAspect::State state, bool on )
|
||||||
|
|
||||||
for ( QskAspect::Aspect aspect : animatorAspects )
|
for ( QskAspect::Aspect aspect : animatorAspects )
|
||||||
{
|
{
|
||||||
if ( localAspects && localAspects->find( aspect ) != localAspects->end() )
|
if ( localHints && ( localHints->find( aspect ) != localHints->end() ) )
|
||||||
{
|
{
|
||||||
// ignore animators from the skin, when we have others
|
// ignore animators from the skin, when we have others
|
||||||
// specifically defined for the skinnable
|
// specifically defined for the skinnable
|
||||||
|
|
Loading…
Reference in New Issue