From 4540cc1e4e21fea77d80343b3f4c27f9386b7c3e Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Tue, 3 Dec 2024 10:06:26 +0100 Subject: [PATCH] QskTextFieldSkinlet::Selected state introduced --- designsystems/fluent2/QskFluent2Skin.cpp | 6 ++++-- designsystems/fusion/QskFusionSkin.cpp | 10 +++++++--- designsystems/material3/QskMaterial3Skin.cpp | 3 +++ src/controls/QskTextField.cpp | 11 +++-------- src/controls/QskTextField.h | 2 +- src/controls/QskTextFieldSkinlet.cpp | 2 ++ src/controls/QskTextFieldSkinlet.h | 2 ++ 7 files changed, 22 insertions(+), 14 deletions(-) diff --git a/designsystems/fluent2/QskFluent2Skin.cpp b/designsystems/fluent2/QskFluent2Skin.cpp index d733ae3a..86fc8779 100644 --- a/designsystems/fluent2/QskFluent2Skin.cpp +++ b/designsystems/fluent2/QskFluent2Skin.cpp @@ -79,6 +79,7 @@ #include #include #include +#include #include #include @@ -1792,12 +1793,13 @@ void Editor::setupTextFieldColors( QskAspect::Section section, const QskFluent2Theme& theme ) { using Q = QskTextField; + using SK = QskTextFieldSkinlet; using A = QskAspect; const auto& pal = theme.palette; - setColor( Q::PanelSelected, pal.fillColor.accent.selectedTextBackground ); - setColor( Q::TextSelected, pal.fillColor.textOnAccent.selectedText ); + setColor( Q::Panel | SK::Selected, pal.fillColor.accent.selectedTextBackground ); + setColor( Q::Text | SK::Selected, pal.fillColor.textOnAccent.selectedText ); for( const auto state : { A::NoState, Q::Hovered, Q::Focused, Q::Editing, Q::Disabled } ) { diff --git a/designsystems/fusion/QskFusionSkin.cpp b/designsystems/fusion/QskFusionSkin.cpp index a7b6f1cf..b3721636 100644 --- a/designsystems/fusion/QskFusionSkin.cpp +++ b/designsystems/fusion/QskFusionSkin.cpp @@ -43,6 +43,7 @@ #include #include #include +#include #include #include @@ -385,6 +386,7 @@ void Editor::setupTextLabel() void Editor::setupTextField() { using Q = QskTextField; + using SK = QskTextFieldSkinlet; using A = QskAspect; using P = QPalette; @@ -395,11 +397,13 @@ void Editor::setupTextField() const auto colorGroup = ( state == A::NoState ) ? P::Active : P::Disabled; setGradient( Q::Panel | state, m_pal.color( colorGroup, P::Base ) ); - setColor( Q::PanelSelected | state, m_pal.color( colorGroup, P::Highlight ) ); - setColor( Q::Text | state, m_pal.color( colorGroup, P::Text ) ); - setColor( Q::TextSelected | state, m_pal.color( colorGroup, P::HighlightedText ) ); + setColor( Q::Panel | SK::Selected | state, + m_pal.color( colorGroup, P::Highlight ) ); + + setColor( Q::Text | SK::Selected | state, + m_pal.color( colorGroup, P::HighlightedText ) ); } setBoxBorderMetrics( Q::Panel, 1_px ); diff --git a/designsystems/material3/QskMaterial3Skin.cpp b/designsystems/material3/QskMaterial3Skin.cpp index 063528ec..1f856b99 100644 --- a/designsystems/material3/QskMaterial3Skin.cpp +++ b/designsystems/material3/QskMaterial3Skin.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -453,10 +454,12 @@ void Editor::setupTextLabel() void Editor::setupTextField() { using Q = QskTextField; + using SK = QskTextFieldSkinlet; setStrutSize( Q::Panel, -1.0, 56_dp ); setPadding( Q::Panel, { 12_dp, 8_dp, 12_dp, 8_dp } ); setGradient( Q::Panel, m_pal.surfaceVariant ); + setColor( Q::Panel | SK::Selected, m_pal.primary12 ); setBoxShape( Q::Panel, m_pal.shapeExtraSmallTop ); setBoxBorderMetrics( Q::Panel, { 0, 0, 0, 1_dp } ); setBoxBorderColors( Q::Panel, m_pal.onSurfaceVariant ); diff --git a/src/controls/QskTextField.cpp b/src/controls/QskTextField.cpp index 9540d476..029ca222 100644 --- a/src/controls/QskTextField.cpp +++ b/src/controls/QskTextField.cpp @@ -4,6 +4,7 @@ *****************************************************************************/ #include "QskTextField.h" +#include "QskTextFieldSkinlet.h" #include "QskFontRole.h" #include "QskQuick.h" @@ -16,12 +17,6 @@ QSK_SUBCONTROL( QskTextField, Panel ) QSK_SUBCONTROL( QskTextField, Text ) QSK_SUBCONTROL( QskTextField, PlaceholderText ) -#if 1 -// shouldn't this be a Selected state, TODO ... -QSK_SUBCONTROL( QskTextField, PanelSelected ) -QSK_SUBCONTROL( QskTextField, TextSelected ) -#endif - QSK_SYSTEM_STATE( QskTextField, ReadOnly, QskAspect::FirstSystemState << 1 ) QSK_SYSTEM_STATE( QskTextField, Editing, QskAspect::FirstSystemState << 2 ) @@ -262,14 +257,14 @@ namespace if ( d->hasSelectedText() ) { - color = textField->color( QskTextField::PanelSelected ); + color = textField->color( QskTextField::Panel | QskTextFieldSkinlet::Selected ); if ( d->selectionColor != color ) { d->selectionColor = color; isDirty = true; } - color = textField->color( QskTextField::TextSelected ); + color = textField->color( QskTextField::Text | QskTextFieldSkinlet::Selected ); if ( d->selectedTextColor != color ) { d->selectedTextColor = color; diff --git a/src/controls/QskTextField.h b/src/controls/QskTextField.h index 73e88f2e..16e08bfe 100644 --- a/src/controls/QskTextField.h +++ b/src/controls/QskTextField.h @@ -55,7 +55,7 @@ class QSK_EXPORT QskTextField : public QskControl using Inherited = QskControl; public: - QSK_SUBCONTROLS( Panel, Text, PlaceholderText, PanelSelected, TextSelected ) + QSK_SUBCONTROLS( Panel, Text, PlaceholderText ) QSK_STATES( ReadOnly, Editing ) enum ActivationMode diff --git a/src/controls/QskTextFieldSkinlet.cpp b/src/controls/QskTextFieldSkinlet.cpp index 6635d663..ae84c7be 100644 --- a/src/controls/QskTextFieldSkinlet.cpp +++ b/src/controls/QskTextFieldSkinlet.cpp @@ -8,6 +8,8 @@ using Q = QskTextField; +QSK_SYSTEM_STATE( QskTextFieldSkinlet, Selected, QskAspect::FirstUserState >> 1 ) + QskTextFieldSkinlet::QskTextFieldSkinlet( QskSkin* skin ) : Inherited( skin ) { diff --git a/src/controls/QskTextFieldSkinlet.h b/src/controls/QskTextFieldSkinlet.h index b7205d27..cbfbc5c8 100644 --- a/src/controls/QskTextFieldSkinlet.h +++ b/src/controls/QskTextFieldSkinlet.h @@ -15,6 +15,8 @@ class QSK_EXPORT QskTextFieldSkinlet : public QskSkinlet using Inherited = QskSkinlet; public: + QSK_STATES( Selected ) + enum NodeRole { PanelRole,