QskSizePolicy - more constrained policies

This commit is contained in:
Uwe Rathmann 2019-06-20 11:45:32 +02:00
parent abfdb4894e
commit 79597b61ca
3 changed files with 32 additions and 21 deletions

View File

@ -24,24 +24,32 @@ class QSK_EXPORT QskSizePolicy
public: public:
enum Flag enum Flag
{ {
GrowFlag = 1 << 0, GrowFlag = 1 << 0,
ExpandFlag = 1 << 1, ExpandFlag = 1 << 1,
ShrinkFlag = 1 << 2, ShrinkFlag = 1 << 2,
IgnoreFlag = 1 << 3, IgnoreFlag = 1 << 3,
ConstrainedFlag = 1 << 4
ConstrainedFlag = IgnoreFlag
}; };
enum Policy enum Policy
{ {
Fixed = 0, Fixed = 0,
Minimum = GrowFlag,
Maximum = ShrinkFlag, Minimum = GrowFlag,
Preferred = GrowFlag | ShrinkFlag, Maximum = ShrinkFlag,
Preferred = GrowFlag | ShrinkFlag,
MinimumExpanding = GrowFlag | ExpandFlag, MinimumExpanding = GrowFlag | ExpandFlag,
Expanding = GrowFlag | ShrinkFlag | ExpandFlag, Expanding = GrowFlag | ShrinkFlag | ExpandFlag,
Ignored = ShrinkFlag | GrowFlag | IgnoreFlag,
Constrained = ConstrainedFlag Ignored = ShrinkFlag | GrowFlag | IgnoreFlag,
Constrained = ConstrainedFlag,
ConstrainedMinimum = ConstrainedFlag | Minimum,
ConstrainedMaximum = ConstrainedFlag | Maximum,
ConstrainedPreferred = ConstrainedFlag | Preferred,
ConstrainedMinimumExpanding = ConstrainedFlag | MinimumExpanding,
ConstrainedExpanding = ConstrainedFlag | Expanding
}; };
Q_ENUM( Flag ) Q_ENUM( Flag )
@ -63,8 +71,8 @@ class QSK_EXPORT QskSizePolicy
void setPolicy( Qt::Orientation, Policy ); void setPolicy( Qt::Orientation, Policy );
private: private:
unsigned char m_horizontalPolicy : 4; unsigned char m_horizontalPolicy;
unsigned char m_verticalPolicy : 4; unsigned char m_verticalPolicy;
}; };
inline QskSizePolicy::QskSizePolicy() inline QskSizePolicy::QskSizePolicy()

View File

@ -253,11 +253,11 @@ class QskControlPrivate final : public QQuickItemPrivate
public: public:
QLocale locale; QLocale locale;
QskSizePolicy sizePolicy;
quint16 controlFlags; quint16 controlFlags;
quint16 controlFlagsMask; quint16 controlFlagsMask;
QskSizePolicy sizePolicy;
bool explicitLocale : 1; bool explicitLocale : 1;
bool autoFillBackground : 1; bool autoFillBackground : 1;
@ -287,9 +287,9 @@ static inline void qskUpdateControlFlags( QskControl::Flags flags, QskControl* c
QskControlPrivate::QskControlPrivate() QskControlPrivate::QskControlPrivate()
: explicitSizeData( nullptr ) : explicitSizeData( nullptr )
, sizePolicy( QskSizePolicy::Preferred, QskSizePolicy::Preferred )
, controlFlags( qskControlFlags() ) , controlFlags( qskControlFlags() )
, controlFlagsMask( 0 ) , controlFlagsMask( 0 )
, sizePolicy( QskSizePolicy::Preferred, QskSizePolicy::Preferred )
, explicitLocale( false ) , explicitLocale( false )
, autoFillBackground( false ) , autoFillBackground( false )
, autoLayoutChildren( false ) , autoLayoutChildren( false )
@ -1154,7 +1154,7 @@ void QskControl::initSizePolicy(
} }
} }
void QskControl::setSizePolicy( const QskSizePolicy& policy ) void QskControl::setSizePolicy( QskSizePolicy policy )
{ {
Q_D( QskControl ); Q_D( QskControl );
@ -1190,7 +1190,7 @@ void QskControl::setSizePolicy(
} }
} }
const QskSizePolicy& QskControl::sizePolicy() const QskSizePolicy QskControl::sizePolicy() const
{ {
return d_func()->sizePolicy; return d_func()->sizePolicy;
} }
@ -1842,7 +1842,10 @@ void QskControl::updatePolish()
for ( auto child : children ) for ( auto child : children )
{ {
if ( !QQuickItemPrivate::get( child )->isTransparentForPositioner() ) if ( !QQuickItemPrivate::get( child )->isTransparentForPositioner() )
{
// rect = QskLayoutConstraint::itemRect( info.item, rect, ... );
qskSetItemGeometry( child, rect ); qskSetItemGeometry( child, rect );
}
} }
} }

View File

@ -149,10 +149,10 @@ class QSK_EXPORT QskControl : public QQuickItem, public QskSkinnable
Q_INVOKABLE bool testControlFlag( Flag ) const; Q_INVOKABLE bool testControlFlag( Flag ) const;
void setSizePolicy( QskSizePolicy::Policy, QskSizePolicy::Policy ); void setSizePolicy( QskSizePolicy::Policy, QskSizePolicy::Policy );
void setSizePolicy( const QskSizePolicy& ); void setSizePolicy( QskSizePolicy );
void setSizePolicy( Qt::Orientation, QskSizePolicy::Policy ); void setSizePolicy( Qt::Orientation, QskSizePolicy::Policy );
const QskSizePolicy& sizePolicy() const; QskSizePolicy sizePolicy() const;
QskSizePolicy::Policy sizePolicy( Qt::Orientation ) const; QskSizePolicy::Policy sizePolicy( Qt::Orientation ) const;
void setMinimumSize( const QSizeF& ); void setMinimumSize( const QSizeF& );