handling of updateFlagsMask fixed

This commit is contained in:
Uwe Rathmann 2021-02-09 12:26:29 +01:00
parent 864fa97180
commit b84e621bfe
1 changed files with 13 additions and 3 deletions

View File

@ -53,7 +53,14 @@ void QskQuickItemPrivate::mirrorChange()
void QskQuickItemPrivate::applyUpdateFlags( QskQuickItem::UpdateFlags flags ) 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; return;
Q_Q( QskQuickItem ); Q_Q( QskQuickItem );
@ -62,9 +69,12 @@ void QskQuickItemPrivate::applyUpdateFlags( QskQuickItem::UpdateFlags flags )
for ( uint i = 0; i < 8; i++ ) for ( uint i = 0; i < 8; i++ )
{ {
const auto flag = static_cast< QskQuickItem::UpdateFlag >( 1 << i ); const auto flag = static_cast< QskQuickItem::UpdateFlag >( 1 << i );
if ( !( this->updateFlagsMask & flag ) )
q->applyUpdateFlag( flag, flags & flag ); q->applyUpdateFlag( flag, flags & flag );
} }
if ( this->updateFlags != oldFlags )
Q_EMIT q->updateFlagsChanged( q->updateFlags() ); Q_EMIT q->updateFlagsChanged( q->updateFlags() );
} }