diff --git a/skins/material3/QskMaterial3Skin.cpp b/skins/material3/QskMaterial3Skin.cpp index 661b5c17..168342f7 100644 --- a/skins/material3/QskMaterial3Skin.cpp +++ b/skins/material3/QskMaterial3Skin.cpp @@ -211,10 +211,10 @@ void Editor::setupControl() { using A = QskAspect; - setPadding( A::Control, 11_dp ); + setPadding( A::NoSubcontrol, 11_dp ); - setGradient( A::Control, m_pal.background ); - setColor( A::Control | A::StyleColor, m_pal.onBackground ); + setGradient( A::NoSubcontrol, m_pal.background ); + setColor( A::NoSubcontrol | A::StyleColor, m_pal.onBackground ); } void Editor::setupCheckBox() diff --git a/skins/squiek/QskSquiekSkin.cpp b/skins/squiek/QskSquiekSkin.cpp index 2965c5a0..e75a03fd 100644 --- a/skins/squiek/QskSquiekSkin.cpp +++ b/skins/squiek/QskSquiekSkin.cpp @@ -277,11 +277,11 @@ void Editor::setupControl() using A = QskAspect; using Q = QskControl; - setPadding( A::Control, 4 ); + setPadding( A::NoSubcontrol, 4 ); - setGradient( A::Control, m_pal.lighter135 ); - setColor( A::Control | A::StyleColor, m_pal.themeForeground ); - setColor( A::Control | A::StyleColor | Q::Disabled, m_pal.theme ); + setGradient( A::NoSubcontrol, m_pal.lighter135 ); + setColor( A::NoSubcontrol | A::StyleColor, m_pal.themeForeground ); + setColor( A::NoSubcontrol | A::StyleColor | Q::Disabled, m_pal.theme ); } void Editor::setupBox() diff --git a/src/common/QskAspect.h b/src/common/QskAspect.h index f066d8eb..cdd8ce15 100644 --- a/src/common/QskAspect.h +++ b/src/common/QskAspect.h @@ -85,7 +85,7 @@ class QSK_EXPORT QskAspect enum Subcontrol : quint16 { - Control = 0, + NoSubcontrol = 0, LastSubcontrol = ( 1 << 12 ) - 1 }; @@ -150,7 +150,9 @@ class QSK_EXPORT QskAspect void setAnimator( bool on ) noexcept; constexpr Subcontrol subControl() const noexcept; - void setSubControl( Subcontrol ) noexcept; + void setSubcontrol( Subcontrol ) noexcept; + constexpr bool hasSubcontrol() const noexcept; + void clearSubcontrol() noexcept; constexpr Section section() const noexcept; void setSection( Section ) noexcept; @@ -241,7 +243,7 @@ constexpr inline QskAspect::State operator>>( QskAspect::State a, const int b ) } inline constexpr QskAspect::QskAspect() noexcept - : QskAspect( Control, Body, Flag, NoPlacement ) + : QskAspect( NoSubcontrol, Body, Flag, NoPlacement ) { } @@ -251,17 +253,17 @@ inline constexpr QskAspect::QskAspect( Subcontrol subControl ) noexcept } inline constexpr QskAspect::QskAspect( Section section ) noexcept - : QskAspect( Control, section, Flag, NoPlacement ) + : QskAspect( NoSubcontrol, section, Flag, NoPlacement ) { } inline constexpr QskAspect::QskAspect( Type type ) noexcept - : QskAspect( Control, Body, type, NoPlacement ) + : QskAspect( NoSubcontrol, Body, type, NoPlacement ) { } inline constexpr QskAspect::QskAspect( Placement placement ) noexcept - : QskAspect( Control, Body, Flag, placement ) + : QskAspect( NoSubcontrol, Body, Flag, placement ) { } @@ -402,11 +404,21 @@ inline constexpr QskAspect::Subcontrol QskAspect::subControl() const noexcept return static_cast< Subcontrol >( m_bits.subControl ); } -inline void QskAspect::setSubControl( Subcontrol subControl ) noexcept +inline void QskAspect::setSubcontrol( Subcontrol subControl ) noexcept { m_bits.subControl = subControl; } +inline constexpr bool QskAspect::hasSubcontrol() const noexcept +{ + return m_bits.subControl != 0; +} + +inline void QskAspect::clearSubcontrol() noexcept +{ + m_bits.subControl = 0; +} + inline constexpr QskAspect::Section QskAspect::section() const noexcept { return static_cast< Section >( m_bits.section ); diff --git a/src/controls/QskControl.cpp b/src/controls/QskControl.cpp index 7f76a2e3..59aaaf35 100644 --- a/src/controls/QskControl.cpp +++ b/src/controls/QskControl.cpp @@ -145,19 +145,19 @@ void QskControl::setBackgroundColor( const QColor& color ) void QskControl::setBackground( const QskGradient& gradient ) { - if ( setGradientHint( QskAspect::Control, gradient ) ) + if ( setGradientHint( QskAspect::NoSubcontrol, gradient ) ) Q_EMIT backgroundChanged(); } void QskControl::resetBackground() { - if ( resetColor( QskAspect::Control ) ) + if ( resetColor( QskAspect::NoSubcontrol ) ) Q_EMIT backgroundChanged(); } QskGradient QskControl::background() const { - return gradientHint( QskAspect::Control ); + return gradientHint( QskAspect::NoSubcontrol ); } void QskControl::setMargins( qreal margin ) @@ -174,7 +174,7 @@ void QskControl::setMargins( const QMarginsF& margins ) { const auto m = QskMargins().expandedTo( margins ); - if ( setMarginHint( QskAspect::Control, m ) ) + if ( setMarginHint( QskAspect::NoSubcontrol, m ) ) { qskSendEventTo( this, QEvent::ContentsRectChange ); Q_EMIT marginsChanged( m ); @@ -183,7 +183,7 @@ void QskControl::setMargins( const QMarginsF& margins ) void QskControl::resetMargins() { - if ( resetMarginHint( QskAspect::Control ) ) + if ( resetMarginHint( QskAspect::NoSubcontrol ) ) { qskSendEventTo( this, QEvent::ContentsRectChange ); Q_EMIT marginsChanged( margins() ); @@ -192,7 +192,7 @@ void QskControl::resetMargins() QMarginsF QskControl::margins() const { - return marginHint( QskAspect::Control ); + return marginHint( QskAspect::NoSubcontrol ); } QRectF QskControl::contentsRect() const diff --git a/src/controls/QskSkin.cpp b/src/controls/QskSkin.cpp index 77f59bb7..172031b2 100644 --- a/src/controls/QskSkin.cpp +++ b/src/controls/QskSkin.cpp @@ -177,7 +177,7 @@ QskSkin::QskSkin( QObject* parent ) { // some defaults const auto noMargins = QVariant::fromValue( QskMargins( 0 ) ); - const auto aspect = QskAspect::Control | QskAspect::Metric; + const auto aspect = QskAspect::NoSubcontrol | QskAspect::Metric; setSkinHint( aspect | QskAspect::Margin, noMargins ); setSkinHint( aspect | QskAspect::Padding, noMargins ); diff --git a/src/controls/QskSkinTransition.cpp b/src/controls/QskSkinTransition.cpp index 985ee28b..c46642aa 100644 --- a/src/controls/QskSkinTransition.cpp +++ b/src/controls/QskSkinTransition.cpp @@ -416,7 +416,7 @@ inline bool WindowAnimator::isControlAffected( const QskControl* control, return false; } - if ( subControl == QskAspect::Control ) + if ( subControl == QskAspect::NoSubcontrol ) { if ( !control->autoFillBackground() ) { diff --git a/src/controls/QskSkinnable.cpp b/src/controls/QskSkinnable.cpp index b84afc29..ef56a449 100644 --- a/src/controls/QskSkinnable.cpp +++ b/src/controls/QskSkinnable.cpp @@ -211,7 +211,7 @@ static inline QskAspect qskSubstitutedAspect( } #endif - aspect.setSubControl( skinnable->effectiveSubcontrol( aspect.subControl() ) ); + aspect.setSubcontrol( skinnable->effectiveSubcontrol( aspect.subControl() ) ); return aspect; } @@ -297,10 +297,10 @@ const QskSkinlet* QskSkinnable::effectiveSkinlet() const void QskSkinnable::setSubcontrolProxy( QskAspect::Subcontrol subControl, QskAspect::Subcontrol proxy ) { - if ( subControl == QskAspect::Control ) + if ( subControl == QskAspect::NoSubcontrol ) return; // nonsense, we ignore this - if ( proxy == QskAspect::Control || subControl == proxy ) + if ( proxy == QskAspect::NoSubcontrol || subControl == proxy ) { resetSubcontrolProxy( subControl ); return; @@ -338,7 +338,7 @@ QskAspect::Subcontrol QskSkinnable::subcontrolProxy( QskAspect::Subcontrol subCo return it->second; } - return QskAspect::Control; + return QskAspect::NoSubcontrol; } QskSkinHintTable& QskSkinnable::hintTable() @@ -733,7 +733,7 @@ QskColorFilter QskSkinnable::effectiveGraphicFilter( if ( !status.isValid() ) return QskColorFilter(); - aspect.setSubControl( status.aspect.subControl() ); + aspect.setSubcontrol( status.aspect.subControl() ); aspect.setSection( QskAspect::Body ); aspect.setPlacement( QskAspect::NoPlacement ); @@ -770,7 +770,7 @@ QskColorFilter QskSkinnable::effectiveGraphicFilter( bool QskSkinnable::setAnimationHint( QskAspect aspect, QskAnimationHint hint ) { - aspect.setSubControl( effectiveSubcontrol( aspect.subControl() ) ); + aspect.setSubcontrol( effectiveSubcontrol( aspect.subControl() ) ); return m_data->hintTable.setAnimation( aspect, hint ); } @@ -865,7 +865,7 @@ bool QskSkinnable::resetSkinHint( QskAspect aspect ) QVariant QskSkinnable::effectiveSkinHint( QskAspect aspect, QskSkinHintStatus* status ) const { - aspect.setSubControl( effectiveSubcontrol( aspect.subControl() ) ); + aspect.setSubcontrol( effectiveSubcontrol( aspect.subControl() ) ); if ( !( aspect.isAnimator() || aspect.hasStates() ) ) { @@ -1049,11 +1049,11 @@ const QVariant& QskSkinnable::storedHint( return *value; } - if ( aspect.subControl() != QskAspect::Control ) + if ( aspect.hasSubcontrol() ) { // trying to resolve something from the skin default settings - aspect.setSubControl( QskAspect::Control ); + aspect.clearSubcontrol(); aspect.clearStates(); if ( const auto value = skinTable.resolvedHint( aspect, &resolvedAspect ) ) @@ -1225,7 +1225,7 @@ void QskSkinnable::startTransition( QskAspect aspect, void QskSkinnable::startTransition( QskAspect aspect, int index, QskAnimationHint animationHint, const QVariant& from, const QVariant& to ) { - aspect.setSubControl( effectiveSubcontrol( aspect.subControl() ) ); + aspect.setSubcontrol( effectiveSubcontrol( aspect.subControl() ) ); startHintTransition( aspect, index, animationHint, from, to ); } @@ -1359,7 +1359,7 @@ bool QskSkinnable::startHintTransitions( const auto subControls = control->subControls(); for ( const auto subControl : subControls ) { - aspect.setSubControl( subControl ); + aspect.setSubcontrol( subControl ); const auto& skinTable = skin->hintTable(); diff --git a/src/layouts/QskSubcontrolLayoutEngine.cpp b/src/layouts/QskSubcontrolLayoutEngine.cpp index 36f65b87..3d17bef8 100644 --- a/src/layouts/QskSubcontrolLayoutEngine.cpp +++ b/src/layouts/QskSubcontrolLayoutEngine.cpp @@ -334,7 +334,7 @@ void QskSubcontrolLayoutEngine::setGraphicTextElements( const QskSkinnable* skin */ GraphicElement* graphicElement = nullptr; - if ( !graphicSize.isEmpty() && ( graphicSubControl != QskAspect::Control ) ) + if ( !graphicSize.isEmpty() && ( graphicSubControl != QskAspect::NoSubcontrol ) ) { graphicElement = dynamic_cast< GraphicElement* >( element( graphicSubControl ) ); if ( graphicElement == nullptr ) @@ -347,7 +347,7 @@ void QskSubcontrolLayoutEngine::setGraphicTextElements( const QskSkinnable* skin } TextElement* textElement = nullptr; - if ( !text.isEmpty() && ( textSubcontrol != QskAspect::Control ) ) + if ( !text.isEmpty() && ( textSubcontrol != QskAspect::NoSubcontrol ) ) { textElement = dynamic_cast< TextElement* >( element( textSubcontrol ) ); if ( textElement == nullptr )