From 66e9e9e0674dff4ac0715faf17bf039eeb287df7 Mon Sep 17 00:00:00 2001 From: Shyamnath Premnadh Date: Fri, 25 Mar 2022 15:40:17 +0100 Subject: PySide6: Fix QMetaProperty::Write(..) Change 108d82d2ca5323652a50706b37f829b9f0457367 introduced a regression that when enum is passed to a QVariant and that QVariant is processed from C++, it does not work as expected. This patch handles the case of enum, separately for the function under consideration. Pick-to: 6.2 Task-number: PYSIDE-1870 Change-Id: I5d002cb36f23d8763de737578af7b52d8259a306 Reviewed-by: Friedemann Kleint Reviewed-by: Christian Tismer --- sources/pyside6/PySide6/QtCore/typesystem_core_common.xml | 3 +++ sources/pyside6/PySide6/glue/qtcore.cpp | 7 +++++++ sources/pyside6/tests/QtWidgets/qvariant_test.py | 9 ++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml b/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml index 06d922851..65011a03e 100644 --- a/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml +++ b/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml @@ -2936,6 +2936,9 @@ + + + diff --git a/sources/pyside6/PySide6/glue/qtcore.cpp b/sources/pyside6/PySide6/glue/qtcore.cpp index 7f0e7b91a..c2d714c9d 100644 --- a/sources/pyside6/PySide6/glue/qtcore.cpp +++ b/sources/pyside6/PySide6/glue/qtcore.cpp @@ -1574,3 +1574,10 @@ QString result; QDebug(&result).nospace() << "type() << ")>"; %PYARG_0 = Shiboken::String::fromCString(qPrintable(result)); // @snippet repr-qevent + +// @snippet qmetaproperty_write_enum +if (Shiboken::Enum::check(%PYARG_2)) { + int in = %CONVERTTOCPP[int](%PYARG_2); + cppArg1 = QVariant(in); +} +// @snippet qmetaproperty_write_enum diff --git a/sources/pyside6/tests/QtWidgets/qvariant_test.py b/sources/pyside6/tests/QtWidgets/qvariant_test.py index 927db4d54..c156cdc3f 100644 --- a/sources/pyside6/tests/QtWidgets/qvariant_test.py +++ b/sources/pyside6/tests/QtWidgets/qvariant_test.py @@ -38,7 +38,7 @@ init_test_paths(False) from PySide6.QtCore import Qt, QObject from PySide6.QtWidgets import (QComboBox, QGraphicsScene, - QGraphicsRectItem, QComboBox) + QGraphicsRectItem) from helper.usesqapplication import UsesQApplication @@ -155,6 +155,13 @@ class QVariantConversionTest(UsesQApplication): self.assertEqual(self.obj.property("test"), test) self.assertTrue(isinstance(self.obj.property("test"), Test)) + def testQMetaPropertyWrite(self): + combo_box = QComboBox() + meta_obj = combo_box.metaObject() + i = meta_obj.indexOfProperty("sizeAdjustPolicy") + success = meta_obj.property(i).write(combo_box, QComboBox.SizeAdjustPolicy.AdjustToContents) + self.assertTrue(success) + if __name__ == '__main__': unittest.main() -- cgit v1.2.3