diff --git a/src/controls/QskSeparator.cpp b/src/controls/QskSeparator.cpp index 4f494274..fe72fa6a 100644 --- a/src/controls/QskSeparator.cpp +++ b/src/controls/QskSeparator.cpp @@ -50,9 +50,29 @@ Qt::Orientation QskSeparator::orientation() const return m_orientation; } +void QskSeparator::setThickness( qreal thickness ) +{ + thickness = qMax( thickness, 0.0 ); + + if ( thickness != metric( QskSeparator::Panel | QskAspect::Size ) ) + { + setMetric( QskSeparator::Panel | QskAspect::Size, thickness ); + + resetImplicitSize(); + update(); + + Q_EMIT thicknessChanged(); + } +} + +qreal QskSeparator::thickness() const +{ + return metric( QskSeparator::Panel | QskAspect::Size ); +} + QSizeF QskSeparator::contentsSizeHint() const { - const qreal m = metric( Panel ); + const qreal m = thickness(); if ( m_orientation == Qt::Horizontal ) return QSizeF( -1, m ); diff --git a/src/controls/QskSeparator.h b/src/controls/QskSeparator.h index fad7bf62..b4b41fb5 100644 --- a/src/controls/QskSeparator.h +++ b/src/controls/QskSeparator.h @@ -16,6 +16,9 @@ class QSK_EXPORT QskSeparator : public QskControl Q_PROPERTY( Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged ) + Q_PROPERTY( qreal thickness READ thickness + WRITE setThickness NOTIFY thicknessChanged ) + using Inherited = QskControl; public: @@ -23,15 +26,20 @@ public: QskSeparator( QQuickItem* parent = nullptr ); QskSeparator( Qt::Orientation, QQuickItem* parent = nullptr ); + virtual ~QskSeparator(); void setOrientation( Qt::Orientation ); Qt::Orientation orientation() const; + void setThickness( qreal thickness ); + qreal thickness() const; + virtual QSizeF contentsSizeHint() const override; Q_SIGNALS: void orientationChanged( Qt::Orientation ); + void thicknessChanged() const; private: Qt::Orientation m_orientation; diff --git a/src/controls/QskSeparatorSkinlet.cpp b/src/controls/QskSeparatorSkinlet.cpp index ea82f95a..fd31f4dd 100644 --- a/src/controls/QskSeparatorSkinlet.cpp +++ b/src/controls/QskSeparatorSkinlet.cpp @@ -51,7 +51,7 @@ QSGNode* QskSeparatorSkinlet::updateSubNode( QRectF QskSeparatorSkinlet::panelRect( const QskSeparator* separator ) const { const QRectF cr = separator->contentsRect(); - const qreal m = separator->metric( QskSeparator::Panel ); + const qreal m = separator->metric( QskSeparator::Panel | QskAspect::Size ); QRectF r; diff --git a/src/skins/material/QskMaterialSkin.cpp b/src/skins/material/QskMaterialSkin.cpp index aaa30a22..76f404b9 100644 --- a/src/skins/material/QskMaterialSkin.cpp +++ b/src/skins/material/QskMaterialSkin.cpp @@ -201,7 +201,7 @@ void QskMaterialSkin::initSeparatorHints() const ColorPalette& pal = m_data->palette; - setMetric( Q::Panel, 4 ); + setMetric( Q::Panel | Size, 4 ); setColor( Q::Panel, pal.baseColor ); } diff --git a/src/skins/squiek/QskSquiekSkin.cpp b/src/skins/squiek/QskSquiekSkin.cpp index 928ca62c..66510bbb 100644 --- a/src/skins/squiek/QskSquiekSkin.cpp +++ b/src/skins/squiek/QskSquiekSkin.cpp @@ -209,7 +209,7 @@ void QskSquiekSkin::initSeparatorHints() const ColorPalette& pal = m_data->palette; - setMetric( Q::Panel, 4 ); + setMetric( Q::Panel | Size, 4 ); setColor( Q::Panel | TopCorners, pal.lighter150 ); setColor( Q::Panel | BottomCorners, pal.lighter125 ); }