From b6df0877563b662babfdf9b5cfa3649911a31642 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Tue, 22 Aug 2017 09:44:56 +0200 Subject: [PATCH] harmonizing handling of local/global hint tables --- src/controls/QskSkin.cpp | 39 ++++++++++++----------------------- src/controls/QskSkinnable.cpp | 11 ++-------- 2 files changed, 15 insertions(+), 35 deletions(-) diff --git a/src/controls/QskSkin.cpp b/src/controls/QskSkin.cpp index cd14a617..439ec414 100644 --- a/src/controls/QskSkin.cpp +++ b/src/controls/QskSkin.cpp @@ -220,51 +220,38 @@ void QskSkin::setSkinHint( QskAspect::Aspect aspect, const QVariant& skinHint ) { using namespace QskAspect; - auto aspectEdge = aspect; - aspectEdge.clearEdge(); + auto aspectEdges = aspect; + aspectEdges.clearEdge(); if ( !bitcount || edges & TopEdge ) - setSkinHint( aspectEdge | TopEdge, skinHint ); + setSkinHint( aspectEdges | TopEdge, skinHint ); if ( !bitcount || ( edges & LeftEdge ) ) - setSkinHint( aspectEdge | LeftEdge, skinHint ); + setSkinHint( aspectEdges | LeftEdge, skinHint ); if ( !bitcount || ( edges & RightEdge ) ) - setSkinHint( aspectEdge | RightEdge, skinHint ); + setSkinHint( aspectEdges | RightEdge, skinHint ); if ( !bitcount || ( edges & BottomEdge ) ) - setSkinHint( aspectEdge | BottomEdge, skinHint ); + setSkinHint( aspectEdges | BottomEdge, skinHint ); } if ( bitcount > 1 ) // Allows 0 to imply AllEdges return; } + auto it = m_data->skinHints.find( aspect ); + if ( it == m_data->skinHints.end() ) { - bool isSame = true; - auto it = m_data->skinHints.find( aspect ); - if ( it == m_data->skinHints.end() ) - { - m_data->skinHints.emplace( aspect, skinHint ); - isSame = false; - } - else if ( it->second != skinHint ) - { - it->second = skinHint; - isSame = false; - } - - if ( isSame ) - return; + m_data->skinHints.emplace( aspect, skinHint ); + } + else if ( it->second != skinHint ) + { + it->second = skinHint; } if ( aspect.isAnimator() ) 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 ) diff --git a/src/controls/QskSkinnable.cpp b/src/controls/QskSkinnable.cpp index f94f72a6..bad8af6b 100644 --- a/src/controls/QskSkinnable.cpp +++ b/src/controls/QskSkinnable.cpp @@ -382,13 +382,10 @@ void QskSkinnable::setSkinHint( QskAspect::Aspect aspect, const QVariant& skinHi auto it = m_data->skinHints->find( aspect ); 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; } @@ -399,10 +396,6 @@ void QskSkinnable::setSkinHint( QskAspect::Aspect aspect, const QVariant& skinHi m_data->anminatorAspects->insert( aspect ); } - else - { - owningControl()->update(); - } } QVariant QskSkinnable::effectiveHint(