From b84e621bfe420c88f8be7ee634218ab86b3472bb Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Tue, 9 Feb 2021 12:26:29 +0100 Subject: [PATCH] handling of updateFlagsMask fixed --- src/controls/QskQuickItemPrivate.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/controls/QskQuickItemPrivate.cpp b/src/controls/QskQuickItemPrivate.cpp index 412deeb2..f7dd7d8b 100644 --- a/src/controls/QskQuickItemPrivate.cpp +++ b/src/controls/QskQuickItemPrivate.cpp @@ -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()