diff --git a/designsystems/material3/QskMaterial3Skin.cpp b/designsystems/material3/QskMaterial3Skin.cpp index 8f42df72..092c4f9c 100644 --- a/designsystems/material3/QskMaterial3Skin.cpp +++ b/designsystems/material3/QskMaterial3Skin.cpp @@ -906,6 +906,7 @@ void Editor::setupSlider() { using A = QskAspect; using Q = QskSlider; + using SK = QskMaterial3SliderSkinlet; const auto extentGroove = 16_dp; const auto extentPanel = 44_dp; @@ -932,10 +933,9 @@ void Editor::setupSlider() setGradient( Q::Ticks, m_pal.primary ); setGradient( Q::Ticks | Q::Disabled, m_pal.onSurface ); - setGradient( Q::Ticks | Q::Filled, m_pal.secondaryContainer ); - setGradient( Q::Ticks | Q::Filled, m_pal.secondaryContainer, - { QskStateCombination::Combination, Q::Focused | Q::Pressed } ); - setGradient( Q::Ticks | Q::Filled | Q::Disabled, m_pal.inverseOnSurface ); + setGradient( Q::Ticks | SK::Filled, m_pal.secondaryContainer, + { QskStateCombination::CombinationNoState, Q::Focused | Q::Pressed } ); + setGradient( Q::Ticks | SK::Filled | Q::Disabled, m_pal.inverseOnSurface ); for ( const auto variation : { A::Horizontal, A::Vertical } ) { diff --git a/designsystems/material3/QskMaterial3SliderSkinlet.cpp b/designsystems/material3/QskMaterial3SliderSkinlet.cpp index d0dfb4bb..2befad91 100644 --- a/designsystems/material3/QskMaterial3SliderSkinlet.cpp +++ b/designsystems/material3/QskMaterial3SliderSkinlet.cpp @@ -11,6 +11,9 @@ #include +// the color of stop indicators is different, when being on top of the filling +QSK_SYSTEM_STATE( QskMaterial3SliderSkinlet, Filled, QskAspect::FirstUserState >> 1 ) + using Q = QskSlider; static inline bool qskHasOrigin( const QskSlider* ) @@ -18,7 +21,7 @@ static inline bool qskHasOrigin( const QskSlider* ) return false; // TODO } -qreal qskTickValue( const QskSlider* slider, int index ) +static inline qreal qskTickValue( const QskSlider* slider, int index ) { if( slider->snap() ) return slider->minimum() + index * slider->stepSize(); @@ -206,7 +209,7 @@ QskAspect::States QskMaterial3SliderSkinlet::sampleStates( { const auto slider = static_cast< const QskSlider* >( skinnable ); if ( qskTickValue( slider, index ) <= slider->value() ) - states |= Q::Filled; + states |= QskMaterial3SliderSkinlet::Filled; } return states; diff --git a/designsystems/material3/QskMaterial3SliderSkinlet.h b/designsystems/material3/QskMaterial3SliderSkinlet.h index 8bd3b1ae..eaa3bf9c 100644 --- a/designsystems/material3/QskMaterial3SliderSkinlet.h +++ b/designsystems/material3/QskMaterial3SliderSkinlet.h @@ -15,6 +15,8 @@ class QskMaterial3SliderSkinlet : QskSliderSkinlet using Inherited = QskSliderSkinlet; public: + QSK_STATES( Filled ) + Q_INVOKABLE QskMaterial3SliderSkinlet( QskSkin* = nullptr ); QRectF subControlRect( const QskSkinnable*, diff --git a/src/controls/QskSlider.cpp b/src/controls/QskSlider.cpp index 53b072f2..ef2461c9 100644 --- a/src/controls/QskSlider.cpp +++ b/src/controls/QskSlider.cpp @@ -17,7 +17,6 @@ QSK_SUBCONTROL( QskSlider, Ticks ) QSK_SUBCONTROL( QskSlider, Handle ) QSK_SYSTEM_STATE( QskSlider, Pressed, QskAspect::FirstSystemState << 2 ) -QSK_SYSTEM_STATE( QskSlider, Filled, QskAspect::FirstSystemState << 3 ) class QskSlider::PrivateData { diff --git a/src/controls/QskSlider.h b/src/controls/QskSlider.h index 23e328d4..616e59e1 100644 --- a/src/controls/QskSlider.h +++ b/src/controls/QskSlider.h @@ -26,7 +26,7 @@ class QSK_EXPORT QskSlider : public QskBoundedValueInput public: QSK_SUBCONTROLS( Panel, Groove, Fill, Scale, Ticks, Handle ) - QSK_STATES( Pressed, Filled ) + QSK_STATES( Pressed ) explicit QskSlider( QQuickItem* parent = nullptr ); explicit QskSlider( Qt::Orientation, QQuickItem* parent = nullptr );