suing initSizePolicy in constructors to avoid potential problems from

layout requests coming before the parent has been constructed completely.
This commit is contained in:
Uwe Rathmann 2017-08-31 09:09:05 +02:00
parent cf58650c05
commit d2d37852a2
13 changed files with 34 additions and 14 deletions

View File

@ -44,7 +44,7 @@ QskGraphicLabel::QskGraphicLabel( const QUrl& source, QQuickItem* parent ):
Inherited( parent ),
m_data( new PrivateData( source ) )
{
setSizePolicy( QskSizePolicy::Expanding, QskSizePolicy::Expanding );
initSizePolicy( QskSizePolicy::Expanding, QskSizePolicy::Expanding );
if ( !m_data->source.isEmpty() )
polish();

View File

@ -226,9 +226,11 @@ QskInputPanel::QskInputPanel( QQuickItem* parent ):
QskControl( parent ),
m_data( new PrivateData )
{
setSizePolicy( QskSizePolicy::Expanding, QskSizePolicy::Expanding );
setFlag( ItemHasContents );
setAcceptedMouseButtons( Qt::MouseButtonMask );
initSizePolicy( QskSizePolicy::Expanding, QskSizePolicy::Expanding );
updateLocale( locale() );
QObject::connect( this, &QskControl::localeChanged,

View File

@ -31,7 +31,7 @@ QskPageIndicator::QskPageIndicator( int count, QQuickItem* parent ):
m_data( new PrivateData( count ) )
{
// as we don't stretch the bullets
setSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Fixed );
initSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Fixed );
}
QskPageIndicator::QskPageIndicator( QQuickItem* parent ):

View File

@ -46,7 +46,7 @@ QskPushButton::QskPushButton( const QString& text, QQuickItem* parent ):
Inherited( parent ),
m_data( new PrivateData( text ) )
{
setSizePolicy( QskSizePolicy::Minimum, QskSizePolicy::Fixed );
initSizePolicy( QskSizePolicy::Minimum, QskSizePolicy::Fixed );
}
QskPushButton::~QskPushButton()

View File

@ -17,6 +17,21 @@ QskResizable::~QskResizable()
{
}
void QskResizable::initSizePolicy(
QskSizePolicy::Policy horizontalPolicy,
QskSizePolicy::Policy verticalPolicy )
{
/*
In constructors of derived classes you don't need
to propagate changes by layoutConstraintChanged.
Sometimes it is even worse as the parent might not be
even prepared to handle the LayouRequest event.
*/
m_sizePolicy.setHorizontalPolicy( horizontalPolicy );
m_sizePolicy.setVerticalPolicy( verticalPolicy );
}
void QskResizable::setSizePolicy( const QskSizePolicy& policy )
{
if ( policy != m_sizePolicy )

View File

@ -63,6 +63,9 @@ public:
virtual qreal heightForWidth( qreal width ) const;
virtual qreal widthForHeight( qreal height ) const;
protected:
void initSizePolicy( QskSizePolicy::Policy, QskSizePolicy::Policy );
private:
virtual void layoutConstraintChanged();

View File

@ -18,9 +18,9 @@ QskSeparator::QskSeparator( Qt::Orientation orientation, QQuickItem* parent ):
m_orientation( orientation )
{
if ( orientation == Qt::Horizontal )
setSizePolicy( QskSizePolicy::Minimum, QskSizePolicy::Fixed );
initSizePolicy( QskSizePolicy::Minimum, QskSizePolicy::Fixed );
else
setSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Minimum );
initSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Minimum );
}
QskSeparator::~QskSeparator()

View File

@ -47,9 +47,9 @@ QskSlider::QskSlider( Qt::Orientation orientation, QQuickItem* parent ):
setActiveFocusOnTab( true );
if ( orientation == Qt::Horizontal )
setSizePolicy( QskSizePolicy::Minimum, QskSizePolicy::Fixed );
initSizePolicy( QskSizePolicy::Minimum, QskSizePolicy::Fixed );
else
setSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Minimum );
initSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Minimum );
setMetric( QskSlider::Handle | QskAspect::Position, position() );

View File

@ -64,7 +64,7 @@ QskStatusIndicator::QskStatusIndicator( QQuickItem* parent ):
Inherited( parent ),
m_data( new PrivateData() )
{
setSizePolicy( QskSizePolicy::Expanding, QskSizePolicy::Expanding );
initSizePolicy( QskSizePolicy::Expanding, QskSizePolicy::Expanding );
}
QskStatusIndicator::~QskStatusIndicator()

View File

@ -34,7 +34,7 @@ QskSubWindow::QskSubWindow( QQuickItem* parent ):
m_data( new PrivateData() )
{
setMargins( 0 );
setSizePolicy( QskSizePolicy::MinimumExpanding, QskSizePolicy::MinimumExpanding );
initSizePolicy( QskSizePolicy::MinimumExpanding, QskSizePolicy::MinimumExpanding );
setAutoLayoutChildren( true );
}

View File

@ -46,9 +46,9 @@ QskTabBar::QskTabBar( Qt::Orientation orientation, QQuickItem* parent ):
m_data->layoutBox->setExtraSpacingAt( Qt::RightEdge | Qt::BottomEdge );
if ( orientation == Qt::Horizontal )
setSizePolicy( QskSizePolicy::Preferred, QskSizePolicy::Fixed );
initSizePolicy( QskSizePolicy::Preferred, QskSizePolicy::Fixed );
else
setSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Preferred );
initSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Preferred );
setAutoLayoutChildren( true );

View File

@ -37,7 +37,7 @@ QskTabButton::QskTabButton( const QString& text, QQuickItem* parent ):
{
resolveTabBar();
setSizePolicy( QskSizePolicy::Minimum, QskSizePolicy::Fixed );
initSizePolicy( QskSizePolicy::Minimum, QskSizePolicy::Fixed );
setCheckable( true );
setExclusive( true );

View File

@ -37,7 +37,7 @@ QskTextLabel::QskTextLabel( const QString& text, QQuickItem* parent ):
Inherited( parent ),
m_data( new PrivateData( text ) )
{
setSizePolicy( QskSizePolicy::Minimum, QskSizePolicy::Fixed );
initSizePolicy( QskSizePolicy::Minimum, QskSizePolicy::Fixed );
}
QskTextLabel::~QskTextLabel()