handling of updateFlagsMask fixed

This commit is contained in:
Uwe Rathmann 2021-02-09 12:26:29 +01:00
parent 864fa97180
commit b84e621bfe

View File

@ -53,7 +53,14 @@ void QskQuickItemPrivate::mirrorChange()
void QskQuickItemPrivate::applyUpdateFlags( QskQuickItem::UpdateFlags flags )
{
if ( flags == updateFlags )
/*
Replace all flags, that have not been set explicitely by the
values from flags. Flags that have been derived from the default
settings can be identified by a 0 in updateFlagsMask.
*/
const auto oldFlags = this->updateFlags;
if ( flags == oldFlags )
return;
Q_Q( QskQuickItem );
@ -62,10 +69,13 @@ void QskQuickItemPrivate::applyUpdateFlags( QskQuickItem::UpdateFlags flags )
for ( uint i = 0; i < 8; i++ )
{
const auto flag = static_cast< QskQuickItem::UpdateFlag >( 1 << i );
q->applyUpdateFlag( flag, flags & flag );
if ( !( this->updateFlagsMask & flag ) )
q->applyUpdateFlag( flag, flags & flag );
}
Q_EMIT q->updateFlagsChanged( q->updateFlags() );
if ( this->updateFlags != oldFlags )
Q_EMIT q->updateFlagsChanged( q->updateFlags() );
}
void QskQuickItemPrivate::layoutConstraintChanged()