harmonizing handling of local/global hint tables

This commit is contained in:
Uwe Rathmann 2017-08-22 09:44:56 +02:00
parent 4fde9abd02
commit b6df087756
2 changed files with 15 additions and 35 deletions

View File

@ -220,51 +220,38 @@ void QskSkin::setSkinHint( QskAspect::Aspect aspect, const QVariant& skinHint )
{ {
using namespace QskAspect; using namespace QskAspect;
auto aspectEdge = aspect; auto aspectEdges = aspect;
aspectEdge.clearEdge(); aspectEdges.clearEdge();
if ( !bitcount || edges & TopEdge ) if ( !bitcount || edges & TopEdge )
setSkinHint( aspectEdge | TopEdge, skinHint ); setSkinHint( aspectEdges | TopEdge, skinHint );
if ( !bitcount || ( edges & LeftEdge ) ) if ( !bitcount || ( edges & LeftEdge ) )
setSkinHint( aspectEdge | LeftEdge, skinHint ); setSkinHint( aspectEdges | LeftEdge, skinHint );
if ( !bitcount || ( edges & RightEdge ) ) if ( !bitcount || ( edges & RightEdge ) )
setSkinHint( aspectEdge | RightEdge, skinHint ); setSkinHint( aspectEdges | RightEdge, skinHint );
if ( !bitcount || ( edges & BottomEdge ) ) if ( !bitcount || ( edges & BottomEdge ) )
setSkinHint( aspectEdge | BottomEdge, skinHint ); setSkinHint( aspectEdges | BottomEdge, skinHint );
} }
if ( bitcount > 1 ) // Allows 0 to imply AllEdges if ( bitcount > 1 ) // Allows 0 to imply AllEdges
return; return;
} }
auto it = m_data->skinHints.find( aspect );
if ( it == m_data->skinHints.end() )
{ {
bool isSame = true; m_data->skinHints.emplace( aspect, skinHint );
auto it = m_data->skinHints.find( aspect ); }
if ( it == m_data->skinHints.end() ) else if ( it->second != skinHint )
{ {
m_data->skinHints.emplace( aspect, skinHint ); it->second = skinHint;
isSame = false;
}
else if ( it->second != skinHint )
{
it->second = skinHint;
isSame = false;
}
if ( isSame )
return;
} }
if ( aspect.isAnimator() ) if ( aspect.isAnimator() )
m_data->animatorAspects[ aspect.subControl() ].insert( aspect ); m_data->animatorAspects[ aspect.subControl() ].insert( aspect );
#if 0
// do we want to have such a signal - or maybe better an event ???
Q_EMIT skinHintChanged( aspect );
#endif
} }
void QskSkin::removeSkinHint( QskAspect::Aspect aspect ) void QskSkin::removeSkinHint( QskAspect::Aspect aspect )

View File

@ -382,13 +382,10 @@ void QskSkinnable::setSkinHint( QskAspect::Aspect aspect, const QVariant& skinHi
auto it = m_data->skinHints->find( aspect ); auto it = m_data->skinHints->find( aspect );
if ( it == m_data->skinHints->end() ) if ( it == m_data->skinHints->end() )
{ {
( *m_data->skinHints )[ aspect ] = skinHint; m_data->skinHints->emplace( aspect, skinHint );
} }
else else if ( it->second != skinHint )
{ {
if ( it->second == skinHint )
return;
it->second = skinHint; it->second = skinHint;
} }
@ -399,10 +396,6 @@ void QskSkinnable::setSkinHint( QskAspect::Aspect aspect, const QVariant& skinHi
m_data->anminatorAspects->insert( aspect ); m_data->anminatorAspects->insert( aspect );
} }
else
{
owningControl()->update();
}
} }
QVariant QskSkinnable::effectiveHint( QVariant QskSkinnable::effectiveHint(