From 79597b61caf09dbad6a89d1af36ca1933706f710 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Thu, 20 Jun 2019 11:45:32 +0200 Subject: [PATCH] QskSizePolicy - more constrained policies --- src/common/QskSizePolicy.h | 36 ++++++++++++++++++++++-------------- src/controls/QskControl.cpp | 13 ++++++++----- src/controls/QskControl.h | 4 ++-- 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/src/common/QskSizePolicy.h b/src/common/QskSizePolicy.h index 7f6826e6..031b8e33 100644 --- a/src/common/QskSizePolicy.h +++ b/src/common/QskSizePolicy.h @@ -24,24 +24,32 @@ class QSK_EXPORT QskSizePolicy public: enum Flag { - GrowFlag = 1 << 0, - ExpandFlag = 1 << 1, - ShrinkFlag = 1 << 2, - IgnoreFlag = 1 << 3, - - ConstrainedFlag = IgnoreFlag + GrowFlag = 1 << 0, + ExpandFlag = 1 << 1, + ShrinkFlag = 1 << 2, + IgnoreFlag = 1 << 3, + ConstrainedFlag = 1 << 4 }; enum Policy { Fixed = 0, - Minimum = GrowFlag, - Maximum = ShrinkFlag, - Preferred = GrowFlag | ShrinkFlag, + + Minimum = GrowFlag, + Maximum = ShrinkFlag, + Preferred = GrowFlag | ShrinkFlag, MinimumExpanding = GrowFlag | ExpandFlag, - Expanding = GrowFlag | ShrinkFlag | ExpandFlag, - Ignored = ShrinkFlag | GrowFlag | IgnoreFlag, - Constrained = ConstrainedFlag + Expanding = GrowFlag | ShrinkFlag | ExpandFlag, + + Ignored = ShrinkFlag | GrowFlag | IgnoreFlag, + + Constrained = ConstrainedFlag, + + ConstrainedMinimum = ConstrainedFlag | Minimum, + ConstrainedMaximum = ConstrainedFlag | Maximum, + ConstrainedPreferred = ConstrainedFlag | Preferred, + ConstrainedMinimumExpanding = ConstrainedFlag | MinimumExpanding, + ConstrainedExpanding = ConstrainedFlag | Expanding }; Q_ENUM( Flag ) @@ -63,8 +71,8 @@ class QSK_EXPORT QskSizePolicy void setPolicy( Qt::Orientation, Policy ); private: - unsigned char m_horizontalPolicy : 4; - unsigned char m_verticalPolicy : 4; + unsigned char m_horizontalPolicy; + unsigned char m_verticalPolicy; }; inline QskSizePolicy::QskSizePolicy() diff --git a/src/controls/QskControl.cpp b/src/controls/QskControl.cpp index 6f52b169..083c8004 100644 --- a/src/controls/QskControl.cpp +++ b/src/controls/QskControl.cpp @@ -253,11 +253,11 @@ class QskControlPrivate final : public QQuickItemPrivate public: QLocale locale; - QskSizePolicy sizePolicy; - quint16 controlFlags; quint16 controlFlagsMask; + QskSizePolicy sizePolicy; + bool explicitLocale : 1; bool autoFillBackground : 1; @@ -287,9 +287,9 @@ static inline void qskUpdateControlFlags( QskControl::Flags flags, QskControl* c QskControlPrivate::QskControlPrivate() : explicitSizeData( nullptr ) - , sizePolicy( QskSizePolicy::Preferred, QskSizePolicy::Preferred ) , controlFlags( qskControlFlags() ) , controlFlagsMask( 0 ) + , sizePolicy( QskSizePolicy::Preferred, QskSizePolicy::Preferred ) , explicitLocale( false ) , autoFillBackground( false ) , autoLayoutChildren( false ) @@ -1154,7 +1154,7 @@ void QskControl::initSizePolicy( } } -void QskControl::setSizePolicy( const QskSizePolicy& policy ) +void QskControl::setSizePolicy( QskSizePolicy policy ) { Q_D( QskControl ); @@ -1190,7 +1190,7 @@ void QskControl::setSizePolicy( } } -const QskSizePolicy& QskControl::sizePolicy() const +QskSizePolicy QskControl::sizePolicy() const { return d_func()->sizePolicy; } @@ -1842,7 +1842,10 @@ void QskControl::updatePolish() for ( auto child : children ) { if ( !QQuickItemPrivate::get( child )->isTransparentForPositioner() ) + { + // rect = QskLayoutConstraint::itemRect( info.item, rect, ... ); qskSetItemGeometry( child, rect ); + } } } diff --git a/src/controls/QskControl.h b/src/controls/QskControl.h index 8256ccaf..b57fdca3 100644 --- a/src/controls/QskControl.h +++ b/src/controls/QskControl.h @@ -149,10 +149,10 @@ class QSK_EXPORT QskControl : public QQuickItem, public QskSkinnable Q_INVOKABLE bool testControlFlag( Flag ) const; void setSizePolicy( QskSizePolicy::Policy, QskSizePolicy::Policy ); - void setSizePolicy( const QskSizePolicy& ); + void setSizePolicy( QskSizePolicy ); void setSizePolicy( Qt::Orientation, QskSizePolicy::Policy ); - const QskSizePolicy& sizePolicy() const; + QskSizePolicy sizePolicy() const; QskSizePolicy::Policy sizePolicy( Qt::Orientation ) const; void setMinimumSize( const QSizeF& );