diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2024-06-26 13:14:35 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2024-06-27 10:41:04 +0200 |
commit | 49530dd5648a6d98a2d9dae3cb517aa9536c2b9b (patch) | |
tree | f8979235f8fe102440ef7f1dd2379d5c8e2fa0db /sources/pyside6/libpyside/dynamicqmetaobject.cpp | |
parent | b008837f6d3b3a68f29142a6fe8b11913cf0aa67 (diff) |
Add warning when adding a Python-declared property fails
Pick-to: 6.7
Change-Id: I3b460f270965706a1b8ed04ef6f51d540db3ba72
Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
Diffstat (limited to 'sources/pyside6/libpyside/dynamicqmetaobject.cpp')
-rw-r--r-- | sources/pyside6/libpyside/dynamicqmetaobject.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/sources/pyside6/libpyside/dynamicqmetaobject.cpp b/sources/pyside6/libpyside/dynamicqmetaobject.cpp index eda3cee09..1a15e60df 100644 --- a/sources/pyside6/libpyside/dynamicqmetaobject.cpp +++ b/sources/pyside6/libpyside/dynamicqmetaobject.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "dynamicqmetaobject.h" +#include "pysidelogging_p.h" #include "pysideqobject.h" #include "pysidesignal.h" #include "pysidesignal_p.h" @@ -277,6 +278,15 @@ int MetaObjectBuilderPrivate::getPropertyNotifyId(PySideProperty *property) cons return notifyId; } +static QByteArray msgInvalidPropertyType(const QByteArray &className, + const QByteArray &propertyName, + const QByteArray &propertyType) +{ + return "QMetaObjectBuilder: Failed to add property \""_ba + propertyName + + "\" to \""_ba + className + "\": Invalid property type \"" + + propertyType + "\"."_ba; +} + QMetaPropertyBuilder MetaObjectBuilderPrivate::createProperty(PySideProperty *property, const QByteArray &propertyName) @@ -302,8 +312,13 @@ QMetaPropertyBuilder } } } - return builder->addProperty(propertyName, property->d->typeName, - propertyNotifyId); + const auto metaType = QMetaType::fromName(property->d->typeName); + if (!metaType.isValid()) { + const auto &msg = msgInvalidPropertyType(m_builder->className(), propertyName, + property->d->typeName); + PyErr_WarnEx(PyExc_RuntimeWarning, msg.constData(), 0); + } + return builder->addProperty(propertyName, property->d->typeName, metaType, propertyNotifyId); } int MetaObjectBuilderPrivate::addProperty(const QByteArray &propertyName, |