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:
Uwe Rathmann 2017-08-22 11:57:10 +02:00
parent b6df087756
commit 1adcce7347

View File

@ -122,7 +122,6 @@ class QskSkinnable::PrivateData
public:
PrivateData():
skinHints( nullptr ),
anminatorAspects( nullptr ),
skinlet( nullptr ),
skinState( QskAspect::NoState ),
hasLocalSkinlet( false )
@ -135,11 +134,9 @@ public:
delete skinlet;
delete skinHints;
delete anminatorAspects;
}
std::unordered_map< QskAspect::Aspect, QVariant >* skinHints;
std::set< QskAspect::Aspect >* anminatorAspects;
QskHintAnimatorTable animators;
@ -388,14 +385,6 @@ void QskSkinnable::setSkinHint( QskAspect::Aspect aspect, const QVariant& skinHi
{
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(
@ -757,14 +746,18 @@ void QskSkinnable::setSkinStateFlag( QskAspect::State state, bool on )
QskControl* control = owningControl();
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 )
startTransition( aspect, m_data->skinState, newState );
const auto aspect = entry.first;
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 )
{
if ( localAspects && localAspects->find( aspect ) != localAspects->end() )
if ( localHints && ( localHints->find( aspect ) != localHints->end() ) )
{
// ignore animators from the skin, when we have others
// specifically defined for the skinnable