code moved to QskLayoutConstraint
This commit is contained in:
parent
83efc6afe7
commit
dbae418b1d
@ -33,9 +33,6 @@ QSK_SYSTEM_STATE( QskControl, Disabled, QskAspect::FirstSystemState )
|
|||||||
QSK_SYSTEM_STATE( QskControl, Hovered, QskAspect::LastSystemState >> 1 )
|
QSK_SYSTEM_STATE( QskControl, Hovered, QskAspect::LastSystemState >> 1 )
|
||||||
QSK_SYSTEM_STATE( QskControl, Focused, QskAspect::LastSystemState )
|
QSK_SYSTEM_STATE( QskControl, Focused, QskAspect::LastSystemState )
|
||||||
|
|
||||||
static QSizeF qskDefaultSizeHints[] =
|
|
||||||
{ { 0, 0 }, { -1, -1 }, { QskLayoutConstraint::unlimited, QskLayoutConstraint::unlimited } };
|
|
||||||
|
|
||||||
void qskResolveLocale( QskControl* ); // not static as being used from outside !
|
void qskResolveLocale( QskControl* ); // not static as being used from outside !
|
||||||
static void qskUpdateControlFlags( QskControl::Flags, QskControl* );
|
static void qskUpdateControlFlags( QskControl::Flags, QskControl* );
|
||||||
|
|
||||||
@ -187,12 +184,6 @@ class QskControlPrivate final : public QQuickItemPrivate
|
|||||||
Q_DECLARE_PUBLIC( QskControl )
|
Q_DECLARE_PUBLIC( QskControl )
|
||||||
|
|
||||||
public:
|
public:
|
||||||
class ExplicitSizeData
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
QSizeF sizeHints[ 3 ] =
|
|
||||||
{ qskDefaultSizeHints[ 0 ], qskDefaultSizeHints[ 1 ], qskDefaultSizeHints[ 2 ] };
|
|
||||||
};
|
|
||||||
|
|
||||||
QskControlPrivate();
|
QskControlPrivate();
|
||||||
~QskControlPrivate() override;
|
~QskControlPrivate() override;
|
||||||
@ -215,6 +206,7 @@ class QskControlPrivate final : public QQuickItemPrivate
|
|||||||
void implicitHeightChanged() override;
|
void implicitHeightChanged() override;
|
||||||
|
|
||||||
void setExplicitSizeHint( Qt::SizeHint, const QSizeF& );
|
void setExplicitSizeHint( Qt::SizeHint, const QSizeF& );
|
||||||
|
void resetExplicitSizeHint( Qt::SizeHint );
|
||||||
QSizeF explicitSizeHint( Qt::SizeHint ) const;
|
QSizeF explicitSizeHint( Qt::SizeHint ) const;
|
||||||
|
|
||||||
bool maybeGesture( QQuickItem*, QEvent* );
|
bool maybeGesture( QQuickItem*, QEvent* );
|
||||||
@ -247,7 +239,7 @@ class QskControlPrivate final : public QQuickItemPrivate
|
|||||||
void implicitSizeChanged();
|
void implicitSizeChanged();
|
||||||
void setImplicitSize( qreal width, qreal height, bool doNotify );
|
void setImplicitSize( qreal width, qreal height, bool doNotify );
|
||||||
|
|
||||||
ExplicitSizeData* explicitSizeData;
|
QSizeF* explicitSizeHints;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QLocale locale;
|
QLocale locale;
|
||||||
@ -282,7 +274,7 @@ static inline void qskUpdateControlFlags( QskControl::Flags flags, QskControl* c
|
|||||||
}
|
}
|
||||||
|
|
||||||
QskControlPrivate::QskControlPrivate()
|
QskControlPrivate::QskControlPrivate()
|
||||||
: explicitSizeData( nullptr )
|
: explicitSizeHints( nullptr )
|
||||||
, controlFlags( qskControlFlags() )
|
, controlFlags( qskControlFlags() )
|
||||||
, controlFlagsMask( 0 )
|
, controlFlagsMask( 0 )
|
||||||
, sizePolicy( QskSizePolicy::Preferred, QskSizePolicy::Preferred )
|
, sizePolicy( QskSizePolicy::Preferred, QskSizePolicy::Preferred )
|
||||||
@ -321,7 +313,7 @@ QskControlPrivate::QskControlPrivate()
|
|||||||
|
|
||||||
QskControlPrivate::~QskControlPrivate()
|
QskControlPrivate::~QskControlPrivate()
|
||||||
{
|
{
|
||||||
delete explicitSizeData;
|
delete [] explicitSizeHints;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskControlPrivate::mirrorChange()
|
void QskControlPrivate::mirrorChange()
|
||||||
@ -442,21 +434,37 @@ void QskControlPrivate::implicitHeightChanged()
|
|||||||
implicitSizeChanged();
|
implicitSizeChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void QskControlPrivate::setExplicitSizeHint(
|
void QskControlPrivate::setExplicitSizeHint(
|
||||||
Qt::SizeHint whichHint, const QSizeF& size )
|
Qt::SizeHint whichHint, const QSizeF& size )
|
||||||
{
|
{
|
||||||
if ( explicitSizeData == nullptr )
|
if ( explicitSizeHints == nullptr )
|
||||||
explicitSizeData = new ExplicitSizeData;
|
{
|
||||||
|
using namespace QskLayoutConstraint;
|
||||||
|
|
||||||
explicitSizeData->sizeHints[ whichHint ] = size;
|
explicitSizeHints = new QSizeF[3];
|
||||||
|
explicitSizeHints[0] = defaultSizeHints[0];
|
||||||
|
explicitSizeHints[1] = defaultSizeHints[1];
|
||||||
|
explicitSizeHints[2] = defaultSizeHints[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
explicitSizeHints[ whichHint ] = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
void QskControlPrivate::resetExplicitSizeHint( Qt::SizeHint whichHint )
|
||||||
|
{
|
||||||
|
if ( explicitSizeHints )
|
||||||
|
{
|
||||||
|
using namespace QskLayoutConstraint;
|
||||||
|
explicitSizeHints[ whichHint ] = defaultSizeHints[ whichHint ];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline QSizeF QskControlPrivate::explicitSizeHint( Qt::SizeHint whichHint ) const
|
inline QSizeF QskControlPrivate::explicitSizeHint( Qt::SizeHint whichHint ) const
|
||||||
{
|
{
|
||||||
if ( explicitSizeData )
|
if ( explicitSizeHints )
|
||||||
return explicitSizeData->sizeHints[ whichHint ];
|
return explicitSizeHints[ whichHint ];
|
||||||
|
|
||||||
return qskDefaultSizeHints[ whichHint ];
|
return QskLayoutConstraint::defaultSizeHints[ whichHint ];
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QskControlPrivate::maybeGesture( QQuickItem* child, QEvent* event )
|
bool QskControlPrivate::maybeGesture( QQuickItem* child, QEvent* event )
|
||||||
@ -1325,7 +1333,15 @@ void QskControl::setFixedHeight( qreal height )
|
|||||||
void QskControl::resetExplicitSizeHint( Qt::SizeHint whichHint )
|
void QskControl::resetExplicitSizeHint( Qt::SizeHint whichHint )
|
||||||
{
|
{
|
||||||
if ( whichHint >= Qt::MinimumSize && whichHint <= Qt::MaximumSize )
|
if ( whichHint >= Qt::MinimumSize && whichHint <= Qt::MaximumSize )
|
||||||
setExplicitSizeHint( whichHint, qskDefaultSizeHints[ whichHint ] );
|
{
|
||||||
|
Q_D( QskControl );
|
||||||
|
|
||||||
|
const auto oldHint = d->explicitSizeHint( whichHint );
|
||||||
|
d->resetExplicitSizeHint( whichHint );
|
||||||
|
|
||||||
|
if ( oldHint != d->explicitSizeHint( whichHint ) )
|
||||||
|
layoutConstraintChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskControl::setExplicitSizeHint( Qt::SizeHint whichHint, const QSizeF& size )
|
void QskControl::setExplicitSizeHint( Qt::SizeHint whichHint, const QSizeF& size )
|
||||||
|
@ -62,6 +62,7 @@ namespace QskLayoutConstraint
|
|||||||
const QQuickItem*, Qt::Orientation, qreal constraint );
|
const QQuickItem*, Qt::Orientation, qreal constraint );
|
||||||
|
|
||||||
const qreal unlimited = std::numeric_limits< float >::max();
|
const qreal unlimited = std::numeric_limits< float >::max();
|
||||||
|
const QSizeF defaultSizeHints[] = { { 0, 0 }, { -1, -1 }, { unlimited, unlimited } };
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user