diff --git a/src/controls/QskSkin.cpp b/src/controls/QskSkin.cpp index 85047e31..6a0968a4 100644 --- a/src/controls/QskSkin.cpp +++ b/src/controls/QskSkin.cpp @@ -525,10 +525,9 @@ QskAspect::State QskSkin::stateMask() const return m_data->stateMask; } -QskSkinlet* QskSkin::skinlet( const QskSkinnable* skinnable ) +QskSkinlet* QskSkin::skinlet( const QMetaObject* metaObject ) { - for ( auto metaObject = skinnable->metaObject(); - metaObject != nullptr; metaObject = metaObject->superClass() ) + while ( metaObject ) { auto it = m_data->skinletMap.find( metaObject ); if ( it != m_data->skinletMap.cend() ) @@ -540,6 +539,8 @@ QskSkinlet* QskSkin::skinlet( const QskSkinnable* skinnable ) return entry.skinlet; } + + metaObject = metaObject->superClass(); } static QskSkinlet defaultSkinlet; diff --git a/src/controls/QskSkin.h b/src/controls/QskSkin.h index dd92d6e5..6f2a37c6 100644 --- a/src/controls/QskSkin.h +++ b/src/controls/QskSkin.h @@ -16,7 +16,6 @@ #include class QskControl; -class QskSkinnable; class QskSkinlet; class QskColorFilter; @@ -143,7 +142,7 @@ class QSK_EXPORT QskSkin : public QObject void setStateMask( QskAspect::State ); QskAspect::State stateMask() const; - QskSkinlet* skinlet( const QskSkinnable* ); + QskSkinlet* skinlet( const QMetaObject* ); const QskSkinHintTable& hintTable() const; diff --git a/src/controls/QskSkinnable.cpp b/src/controls/QskSkinnable.cpp index 80cec18b..3b952094 100644 --- a/src/controls/QskSkinnable.cpp +++ b/src/controls/QskSkinnable.cpp @@ -231,7 +231,7 @@ const QskSkinlet* QskSkinnable::effectiveSkinlet() const { if ( m_data->skinlet == nullptr ) { - m_data->skinlet = qskSetup->skin()->skinlet( this ); + m_data->skinlet = qskSetup->skin()->skinlet( metaObject() ); m_data->hasLocalSkinlet = false; }