summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qobject.cpp
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2025-06-24 16:09:12 +0200
committerMarc Mutz <marc.mutz@qt.io>2025-06-27 17:21:45 +0200
commitec24625373c680fd51237b809792e9cd98c792f0 (patch)
tree76ce2e3e8952a6453e8907a48124be260c145457 /src/corelib/kernel/qobject.cpp
parentf12d046383decf8f468de62732c9cff7d4303cbf (diff)
QObject: Extract Method q_choose_{assign,append} from doSetProperty()
We'll apply that doSetFoo() pattern in more places going forward, so extract the central switch between lvalue and rvalue into a pair of class helper functions for easier reuse. Needed a new header for this, so started a qtclasshelper_p.h. Amends 39cdf431f034121353e51768b4d1fec8b0dd35dc. Pick-to: 6.10 6.9 6.8 Change-Id: I864b7faba41a74058e42d2ca96a0cc519751389f Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel/qobject.cpp')
-rw-r--r--src/corelib/kernel/qobject.cpp11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index 0d2ec8efd7a..5a6da48d52c 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -8,6 +8,7 @@
#include "qobject_p_p.h"
#include "qmetaobject_p.h"
+#include <QtCore/private/qtclasshelper_p.h>
#include "qabstracteventdispatcher.h"
#include "qabstracteventdispatcher_p.h"
#include "qcoreapplication.h"
@@ -4392,18 +4393,12 @@ bool QObject::doSetProperty(const char *name, const QVariant *lvalue, QVariant *
} else {
if (idx == -1) {
d->extraData->propertyNames.append(name);
- if (rvalue)
- d->extraData->propertyValues.append(std::move(*rvalue));
- else
- d->extraData->propertyValues.append(*lvalue);
+ q_choose_append(d->extraData->propertyValues, value, rvalue);
} else {
if (value.userType() == d->extraData->propertyValues.at(idx).userType()
&& value == d->extraData->propertyValues.at(idx))
return false;
- if (rvalue)
- d->extraData->propertyValues[idx] = std::move(*rvalue);
- else
- d->extraData->propertyValues[idx] = *lvalue;
+ q_choose_assign(d->extraData->propertyValues[idx], value, rvalue);
}
}