summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <[email protected]>2025-06-25 18:31:44 +0200
committerQt Cherry-pick Bot <[email protected]>2025-06-28 10:59:26 +0000
commit6a647fa167c3f3e923bdba9e18a732eac84eff90 (patch)
tree7986649b0c45ac2df1a0d7fd78fac4b588bed9fe
parent31c8131f242d4fc7bf6126542ef4e320505fbefa (diff)
QObject: make doSetProperty() take lvalue arg by cref
... not by pointer. It makes more sense this way, since `lvalue` is always passed (unlike `rvalue`, which is passed optionally, so needs a nil state), and removes a potential error state (lvalue == nullptr) that neither the compiler nor a reader of the code now have to worry about anymore. As a drive-by, rename the argument so the local alias in the function can go away, too. Amends 39cdf431f034121353e51768b4d1fec8b0dd35dc. Change-Id: I818e4fec30360c5b63b84a0f7e1e1eebdfe2cfcc Reviewed-by: Ivan Solovev <[email protected]> Reviewed-by: Thiago Macieira <[email protected]> (cherry picked from commit 4ec8b1096cbe5f888754fcd6de2b549f67a58914) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
-rw-r--r--src/corelib/compat/removed_api.cpp7
-rw-r--r--src/corelib/kernel/qobject.cpp5
-rw-r--r--src/corelib/kernel/qobject.h7
3 files changed, 14 insertions, 5 deletions
diff --git a/src/corelib/compat/removed_api.cpp b/src/corelib/compat/removed_api.cpp
index 5b592bcfc76..4285e39a542 100644
--- a/src/corelib/compat/removed_api.cpp
+++ b/src/corelib/compat/removed_api.cpp
@@ -1465,6 +1465,13 @@ QNoDebug QMessageLogger::noDebug() const noexcept
#include "qmutex.h" // removed, previously-inline API
+#include "qobject.h"
+
+bool QObject::doSetProperty(const char *name, const QVariant *lvalue, QVariant *rvalue)
+{
+ return doSetProperty(name, *lvalue, rvalue);
+}
+
#include "qstring.h" // inlined API
// #include "qotherheader.h"
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index 5a6da48d52c..46f2ad7d1c4 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -4371,10 +4371,9 @@ int QObjectPrivate::signalIndex(const char *signalName,
\overload setProperty
*/
-bool QObject::doSetProperty(const char *name, const QVariant *lvalue, QVariant *rvalue)
+bool QObject::doSetProperty(const char *name, const QVariant &value, QVariant *rvalue)
{
Q_D(QObject);
- const auto &value =*lvalue;
const QMetaObject *meta = metaObject();
if (!name || !meta)
return false;
@@ -4413,7 +4412,7 @@ bool QObject::doSetProperty(const char *name, const QVariant *lvalue, QVariant *
qWarning("%s::setProperty: Property \"%s\" invalid,"
" read-only or does not exist", metaObject()->className(), name);
#endif
- return rvalue ? p.write(this, std::move(*rvalue)) : p.write(this, *lvalue);
+ return rvalue ? p.write(this, std::move(*rvalue)) : p.write(this, value);
}
/*!
diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h
index 813ccdb6735..8c2cd74281e 100644
--- a/src/corelib/kernel/qobject.h
+++ b/src/corelib/kernel/qobject.h
@@ -387,7 +387,10 @@ protected:
private:
void doSetObjectName(const QString &name);
+#if QT_CORE_REMOVED_SINCE(6, 10)
bool doSetProperty(const char *name, const QVariant *lvalue, QVariant *rvalue);
+#endif
+ bool doSetProperty(const char *name, const QVariant &value, QVariant *rvalue);
Q_DISABLE_COPY(QObject)
@@ -409,12 +412,12 @@ inline QMetaObject::Connection QObject::connect(const QObject *asender, const ch
#if QT_CORE_INLINE_IMPL_SINCE(6, 6)
bool QObject::setProperty(const char *name, const QVariant &value)
{
- return doSetProperty(name, &value, nullptr);
+ return doSetProperty(name, value, nullptr);
}
#endif // inline since 6.6
bool QObject::setProperty(const char *name, QVariant &&value)
{
- return doSetProperty(name, &value, &value);
+ return doSetProperty(name, value, &value);
}
template <class T>