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:
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user