diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-04-07 06:22:32 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-04-07 06:22:43 +0200 |
commit | 00dd9150030760544e17563eba2b2dc61ab55541 (patch) | |
tree | 9c9b0151fd8ca5a5f71bc925a39dc2e05fc520e4 /sources/shiboken2/generator | |
parent | d3ef4859e0a2813f6f9d53185511d494d75c49bd (diff) | |
parent | 4fc3a3ac713cdde1453619ecf1116604c36d82b5 (diff) |
Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: Id9d77dcbb396227a670e4455031ce074488c9e17
Diffstat (limited to 'sources/shiboken2/generator')
-rw-r--r-- | sources/shiboken2/generator/shiboken2/shibokengenerator.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp b/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp index 170cbd74e..8876bcf83 100644 --- a/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp +++ b/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp @@ -2187,9 +2187,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 @@ -2204,6 +2202,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; } |