From e15bccb0e1f40b959801860f14578c0d77ba8176 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Sat, 4 Apr 2020 23:09:14 +0200 Subject: shiboken: Fix Qt properties not working in classes inheriting QObject The fixes for PYSIDE-803 caused setattro methods to be generated for many classes, resulting in QObject's setattro method no longer being called. Generate property code in each class inheriting QObject. Task-number: PYSIDE-803 Fixes: PYSIDE-1255 Change-Id: I56f52fb43c4ddc77914090ac122776050354ddbe Reviewed-by: Christian Tismer --- sources/shiboken2/generator/shiboken2/shibokengenerator.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'sources/shiboken2/generator/shiboken2/shibokengenerator.cpp') diff --git a/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp b/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp index fbd3c314b..a712c3ebb 100644 --- a/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp +++ b/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp @@ -2219,6 +2219,13 @@ ShibokenGenerator::AttroCheck ShibokenGenerator::checkAttroFunctionNeeds(const A result |= AttroCheckFlag::SetattroQObject; if (useOverrideCaching(metaClass)) result |= AttroCheckFlag::SetattroMethodOverride; + // PYSIDE-1255: If setattro is generated for a class inheriting + // QObject, the property code needs to be generated, too. + if ((result & AttroCheckFlag::SetattroMask) != 0 + && !result.testFlag(AttroCheckFlag::SetattroQObject) + && metaClass->isQObject()) { + result |= AttroCheckFlag::SetattroQObject; + } } return result; } -- cgit v1.2.3