micro optimzation

This commit is contained in:
Uwe Rathmann 2019-09-23 16:59:48 +02:00
parent 9b4cc90063
commit a8f888ca08
2 changed files with 12 additions and 11 deletions

View File

@ -156,19 +156,13 @@ QskQuickItem::QskQuickItem( QskQuickItemPrivate& dd, QQuickItem* parent )
{
setFlag( QQuickItem::ItemHasContents, true );
// since Qt 5.10 we have QQuickItem::ItemEnabledHasChanged
#if QT_VERSION < QT_VERSION_CHECK( 5, 10, 0 )
/*
Setting up this connections slows down the time needed
for construction by almost 100%. Would be nice to
avoid this penalty also for earlier Qt versions.
*/
// since Qt 5.10 we have QQuickItem::ItemEnabledHasChanged
connect( this, &QQuickItem::enabledChanged,
[ this ] { qskSendEventTo( this, QEvent::EnabledChange ); } );
this, &QskQuickItem::sendEnabledChangeEvent );
#endif
Q_D( QskQuickItem );
if ( d->controlFlags & QskQuickItem::DeferredUpdate )
if ( dd.controlFlags & QskQuickItem::DeferredUpdate )
qskFilterWindow( window() );
qskRegistry->insert( this );
@ -187,7 +181,8 @@ QskQuickItem::~QskQuickItem()
qskRegistry->remove( this );
#if QT_VERSION < QT_VERSION_CHECK( 5, 10, 0 )
disconnect( this, &QQuickItem::enabledChanged, nullptr, nullptr );
disconnect( this, &QQuickItem::enabledChanged,
this, &QskQuickItem::sendEnabledChangeEvent );
#endif
}
@ -586,6 +581,11 @@ void QskQuickItem::resetImplicitSize()
}
}
void QskQuickItem::sendEnabledChangeEvent()
{
qskSendEventTo( this, QEvent::EnabledChange );
}
bool QskQuickItem::event( QEvent* event )
{
const int eventType = event->type();
@ -698,7 +698,7 @@ void QskQuickItem::itemChange( QQuickItem::ItemChange change,
#if QT_VERSION >= QT_VERSION_CHECK( 5, 10, 0 )
case QQuickItem::ItemEnabledHasChanged:
{
qskSendEventTo( this, QEvent::EnabledChange );
sendEnabledChangeEvent();
break;
}
#endif

View File

@ -132,6 +132,7 @@ class QSK_EXPORT QskQuickItem : public QQuickItem
void childrenRect() = delete;
void updateControlFlag( uint flag, bool on );
void sendEnabledChangeEvent();
QSGNode* updatePaintNode( QSGNode*, UpdatePaintNodeData* ) override final;
virtual QSGNode* updateItemPaintNode( QSGNode* );