From 82bd6f14201be547a1c27f16d43fcdb1653dc8d8 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Mon, 26 Feb 2024 17:58:49 +0100 Subject: [PATCH] QskSpinBox text alignment fixed --- designsystems/fluent2/QskFluent2Skin.cpp | 11 +++++++- designsystems/fusion/QskFusionSkin.cpp | 5 ++-- designsystems/material3/QskMaterial3Skin.cpp | 1 - src/controls/QskSpinBox.cpp | 29 ++------------------ src/controls/QskSpinBox.h | 11 -------- src/controls/QskSpinBoxSkinlet.cpp | 6 +--- 6 files changed, 16 insertions(+), 47 deletions(-) diff --git a/designsystems/fluent2/QskFluent2Skin.cpp b/designsystems/fluent2/QskFluent2Skin.cpp index d52c10c0..0a4911a9 100644 --- a/designsystems/fluent2/QskFluent2Skin.cpp +++ b/designsystems/fluent2/QskFluent2Skin.cpp @@ -1497,13 +1497,22 @@ void Editor::setupSpinBoxMetrics() { using Q = QskSpinBox; + /* + The F2 NumberBox has 2 modes for the Up/Down panels ( a.k.a Spinner ): + + - compact ( -> QskSpinBox::UpDownControl ) + - inline ( -> QskSpinBox::ButtonsRight ) + + TODO: in compact mode the panels/indicators are blown up, when being hovered + */ setHint( Q::Panel | QskAspect::Style, Q::ButtonsRight ); + setStrutSize( Q::Panel, { -1, 32_px } ); setBoxBorderMetrics( Q::Panel, 1_px ); setBoxShape( Q::Panel, 3_px ); setPadding( Q::Panel, { 11_px, 0, 11_px, 0 } ); - setAlignment( Q::Text, Qt::AlignLeft ); + setAlignment( Q::Text, Qt::AlignLeft | Qt::AlignVCenter ); setFontRole( Q::Text, Fluent2::Body ); setPadding( Q::TextPanel, { 11_px, 5_px, 0, 0 } ); diff --git a/designsystems/fusion/QskFusionSkin.cpp b/designsystems/fusion/QskFusionSkin.cpp index b2add0a2..73ec47f9 100644 --- a/designsystems/fusion/QskFusionSkin.cpp +++ b/designsystems/fusion/QskFusionSkin.cpp @@ -859,8 +859,6 @@ void Editor::setupSpinBox() setPadding( Q::TextPanel, 5_dp ); setBoxShape( Q::TextPanel, 2, 0, 2, 0 ); - - setColor( Q::Text, m_pal.active( P::Text ) ); setGradient( Q::TextPanel | Q::Disabled, m_pal.disabled( P::Base ) ); setBoxBorderMetrics( Q::TextPanel, 1_dp ); @@ -872,6 +870,9 @@ void Editor::setupSpinBox() Combination( { Q::Increasing, Q::Decreasing, Q::Hovered } ) ); #endif + setColor( Q::Text, m_pal.active( P::Text ) ); + setAlignment( Q::Text, Qt::AlignCenter ); + setBoxShape( Q::UpPanel, 0, 2_dp, 0, 0 ); setBoxBorderMetrics( Q::UpPanel, 0_dp, 1_dp, 1_dp, 0_dp ); diff --git a/designsystems/material3/QskMaterial3Skin.cpp b/designsystems/material3/QskMaterial3Skin.cpp index b18e1bf9..033e5a88 100644 --- a/designsystems/material3/QskMaterial3Skin.cpp +++ b/designsystems/material3/QskMaterial3Skin.cpp @@ -887,7 +887,6 @@ void Editor::setupSpinBox() setStrutSize( Q::UpPanel, 40_dp,40_dp ); setStrutSize( Q::DownPanel, 40_dp, 40_dp ); - setAlignment( Q::Panel, Qt::AlignHCenter ); setAlignment( Q::Text, Qt::AlignCenter ); for( const auto subControl : { Q::DownPanel, Q::UpPanel, Q::TextPanel } ) diff --git a/src/controls/QskSpinBox.cpp b/src/controls/QskSpinBox.cpp index 56ae6e7f..cdd19eb9 100644 --- a/src/controls/QskSpinBox.cpp +++ b/src/controls/QskSpinBox.cpp @@ -39,14 +39,9 @@ namespace return QskAspect::NoSubcontrol; } - inline QskAspect aspectDecoration() + inline constexpr QskAspect aspectDecoration() { - return QskSpinBox::Panel | QskAspect::NoType | QskAspect::Style; - } - - inline QskAspect aspectTextAlignment() - { - return QskSpinBox::TextPanel | QskAspect::NoType | QskAspect::Alignment; + return QskSpinBox::Panel | QskAspect::Style; } } @@ -176,26 +171,6 @@ QskSpinBox::Decoration QskSpinBox::decoration() const return flagHint< QskSpinBox::Decoration >( aspectDecoration(), ButtonsLeftAndRight ); } -void QskSpinBox::setTextAlignment( Qt::Alignment alignment ) -{ - alignment &= Qt::AlignHorizontal_Mask; - - if ( setFlagHint( aspectTextAlignment(), alignment ) ) - Q_EMIT textAlignmentChanged( alignment ); -} - -void QskSpinBox::resetTextAlignment() -{ - if ( resetSkinHint( aspectTextAlignment() ) ) - Q_EMIT textAlignmentChanged( textAlignment() ); -} - -Qt::Alignment QskSpinBox::textAlignment() const -{ - return flagHint< Qt::Alignment >( - aspectTextAlignment(), Qt::AlignLeft ) & Qt::AlignHorizontal_Mask; -} - void QskSpinBox::setWrapping( bool on ) { if ( on != m_data->wrapping ) diff --git a/src/controls/QskSpinBox.h b/src/controls/QskSpinBox.h index 518537c1..38f62c35 100644 --- a/src/controls/QskSpinBox.h +++ b/src/controls/QskSpinBox.h @@ -22,9 +22,6 @@ class QSK_EXPORT QskSpinBox : public QskBoundedValueInput Q_PROPERTY( int decimals READ decimals WRITE setDecimals NOTIFY decimalsChanged ) - Q_PROPERTY( Qt::Alignment textAlignment READ textAlignment - WRITE setTextAlignment RESET textAlignment NOTIFY textAlignmentChanged ) - Q_PROPERTY( QString text READ text NOTIFY textChanged ) public: @@ -53,11 +50,6 @@ class QSK_EXPORT QskSpinBox : public QskBoundedValueInput void resetDecoration(); Decoration decoration() const; - // Qt::AlignLeft, Qt::AlignRight or Qt::AlignHCenter. - void setTextAlignment( Qt::Alignment ); - void resetTextAlignment(); - Qt::Alignment textAlignment() const; - void setWrapping( bool ); bool isWrapping() const; @@ -71,10 +63,7 @@ class QSK_EXPORT QskSpinBox : public QskBoundedValueInput Q_SIGNALS: void decorationChanged( Decoration ); - void textAlignmentChanged( Qt::Alignment ); - void wrappingChanged( bool ); - void decimalsChanged( int ); void textChanged(); diff --git a/src/controls/QskSpinBoxSkinlet.cpp b/src/controls/QskSpinBoxSkinlet.cpp index 8970f703..a9afc159 100644 --- a/src/controls/QskSpinBoxSkinlet.cpp +++ b/src/controls/QskSpinBoxSkinlet.cpp @@ -117,11 +117,7 @@ QSGNode* QskSpinBoxSkinlet::updateSubNode( case TextRole: { auto spinBox = static_cast< const QskSpinBox* >( skinnable ); - - const auto rect = subControlRect( spinBox, spinBox->contentsRect(), Q::Text ); - - return updateTextNode( spinBox, node, rect, - spinBox->textAlignment(), spinBox->text(), Q::Text ); + return updateTextNode( spinBox, node, spinBox->text(), Q::Text ); } }