From 4e438df051080d0ee1c8053df3d749680d06a58b Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sat, 14 Dec 2019 13:34:30 +0100 Subject: [PATCH] QskSkinnable::resetHint changed --- src/controls/QskBox.cpp | 21 +++++---------------- src/controls/QskSkinnable.cpp | 14 +++++++++++--- src/controls/QskSkinnable.h | 2 +- 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/src/controls/QskBox.cpp b/src/controls/QskBox.cpp index 212e4d9e..31e7a9fd 100644 --- a/src/controls/QskBox.cpp +++ b/src/controls/QskBox.cpp @@ -4,7 +4,6 @@ *****************************************************************************/ #include "QskBox.h" -#include "QskSkinHintTable.h" QSK_SUBCONTROL( QskBox, Panel ) @@ -72,25 +71,15 @@ void QskBox::setPadding( const QMarginsF& padding ) void QskBox::resetPadding() { using namespace QskAspect; - const Aspect aspect = QskBox::Panel | Metric | Padding; - const auto oldPadding = marginsHint( aspect ); - - auto& table = hintTable(); - if ( table.hint( aspect ).isValid() ) + if ( resetHint( QskBox::Panel | Metric | Padding ) ) { - table.removeHint( aspect ); + resetImplicitSize(); - const auto padding = marginsHint( aspect ); - if ( padding != oldPadding ) - { - resetImplicitSize(); + if ( polishOnResize() || autoLayoutChildren() ) + polish(); - if ( polishOnResize() || autoLayoutChildren() ) - polish(); - - Q_EMIT paddingChanged( padding ); - } + Q_EMIT paddingChanged( padding() ); } } diff --git a/src/controls/QskSkinnable.cpp b/src/controls/QskSkinnable.cpp index 16854455..0a6a1552 100644 --- a/src/controls/QskSkinnable.cpp +++ b/src/controls/QskSkinnable.cpp @@ -419,9 +419,17 @@ QskAnimationHint QskSkinnable::effectiveAnimation( return hint; } -void QskSkinnable::resetHint( QskAspect::Aspect aspect ) +bool QskSkinnable::resetHint( QskAspect::Aspect aspect ) { - m_data->hintTable.removeHint( aspect ); + const auto value = m_data->hintTable.takeHint( aspect ); + + if ( value.isValid() ) + { + // return true, if the value has changed + return value != storedHint( aspect ); + } + + return false; } QVariant QskSkinnable::effectiveHint( @@ -571,7 +579,7 @@ const QVariant& QskSkinnable::storedHint( if ( aspect.subControl() != QskAspect::Control ) { - // trying to resolve something the skin default settings + // trying to resolve something from the skin default settings aspect.setSubControl( QskAspect::Control ); aspect.clearStates(); diff --git a/src/controls/QskSkinnable.h b/src/controls/QskSkinnable.h index d6e34a9c..aa9433d6 100644 --- a/src/controls/QskSkinnable.h +++ b/src/controls/QskSkinnable.h @@ -112,7 +112,7 @@ class QSK_EXPORT QskSkinnable void setAnimation( QskAspect::Aspect, QskAnimationHint ); QskAnimationHint animation( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; - void resetHint( QskAspect::Aspect ); + bool resetHint( QskAspect::Aspect ); QskAnimationHint effectiveAnimation( QskAspect::Type, QskAspect::Subcontrol, QskAspect::State, QskSkinHintStatus* status = nullptr ) const;