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') 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 From b9bf10b9cff9399ef575842f286e96dc24dac5c9 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Sun, 5 Apr 2020 11:03:21 +0200 Subject: Revert "shiboken: Add XML attribute to turn off method caching" This reverts commit fcbbab0a6b5949b5c3726214ed87898b5fbcebcc. This is no longer required after a fix generating the property code into the setattro methods of QObject-derived classes. Task-number: PYSIDE-803 Task-number: PYSIDE-1255 Change-Id: I9e989c0592eaaf25aa55a1db49537daa4bdb2a57 Reviewed-by: Christian Tismer --- sources/shiboken2/generator/shiboken2/shibokengenerator.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'sources/shiboken2/generator') diff --git a/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp b/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp index a712c3ebb..2cdb8870c 100644 --- a/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp +++ b/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp @@ -2202,9 +2202,7 @@ bool ShibokenGenerator::injectedCodeUsesArgument(const AbstractMetaFunction *fun bool ShibokenGenerator::useOverrideCaching(const AbstractMetaClass *metaClass) { - return metaClass->isPolymorphic() - && !metaClass->typeEntry()->typeFlags().testFlag(ComplexTypeEntry::NoOverrideCaching); - + return metaClass->isPolymorphic(); } ShibokenGenerator::AttroCheck ShibokenGenerator::checkAttroFunctionNeeds(const AbstractMetaClass *metaClass) const -- cgit v1.2.3