Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRenato Araujo Oliveira Filho <renato.araujo@kdab.com>2025-04-17 11:20:02 -0300
committerRenato Araujo Oliveira Filho <renato.araujo@kdab.com>2025-04-23 10:12:13 -0300
commitcaa9d339c3ba96879ae5972b08787506ec36d92b (patch)
tree4be4c695f2eff0654ccd1745b5c5a9d4d2320a65 /sources/pyside6/libpyside/pysideqenum.cpp
parent2f55adcea4b5d058bb600c2f2cc78106c93e10b8 (diff)
Fix QMetaEnum conversions into QVariant
Make sure to store QtEnums in QVariant when the enum has a metatype. Fixes: PYSIDE-3084 Change-Id: I94b89f89e6fb3c58560325f2a6843a5260d86557 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside6/libpyside/pysideqenum.cpp')
-rw-r--r--sources/pyside6/libpyside/pysideqenum.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/sources/pyside6/libpyside/pysideqenum.cpp b/sources/pyside6/libpyside/pysideqenum.cpp
index e922c2d24..8fc33d5db 100644
--- a/sources/pyside6/libpyside/pysideqenum.cpp
+++ b/sources/pyside6/libpyside/pysideqenum.cpp
@@ -10,6 +10,8 @@
#include <map>
+#include <QtCore/qmetatype.h>
+
///////////////////////////////////////////////////////////////
//
// PYSIDE-957: Create QEnum dynamically from Python Enum
@@ -193,6 +195,21 @@ std::vector<PyObject *> resolveDelayedQEnums(PyTypeObject *containerType)
return result;
}
+QByteArray getTypeName(PyTypeObject *type)
+{
+ if (!Shiboken::Enum::checkType(type))
+ return {};
+
+ Shiboken::AutoDecRef qualName(PyObject_GetAttr(reinterpret_cast<PyObject *>(type),
+ Shiboken::PyMagicName::qualname()));
+ QByteArray result = Shiboken::String::toCString(qualName.object());
+ result.replace(".", "::");
+
+ const auto metaType = QMetaType::fromName(result);
+ return metaType.isValid() && metaType.flags().testFlag(QMetaType::IsEnumeration)
+ ? result : QByteArray{};
+}
+
} // namespace Shiboken::Enum
//