diff options
author | Marc Mutz <[email protected]> | 2025-06-25 18:31:44 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <[email protected]> | 2025-06-28 10:59:26 +0000 |
commit | 6a647fa167c3f3e923bdba9e18a732eac84eff90 (patch) | |
tree | 7986649b0c45ac2df1a0d7fd78fac4b588bed9fe | |
parent | 31c8131f242d4fc7bf6126542ef4e320505fbefa (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.cpp | 7 | ||||
-rw-r--r-- | src/corelib/kernel/qobject.cpp | 5 | ||||
-rw-r--r-- | src/corelib/kernel/qobject.h | 7 |
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> |