diff options
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/moc/generator.cpp | 2 | ||||
-rw-r--r-- | src/tools/moc/moc.cpp | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp index 2c41b17b68..f27c155da5 100644 --- a/src/tools/moc/generator.cpp +++ b/src/tools/moc/generator.cpp @@ -530,7 +530,7 @@ void Generator::generateCode() if (isQObject) fprintf(out, " { Q_NULLPTR, "); - else if (cdef->superclassList.size()) + else if (cdef->superclassList.size() && (!cdef->hasQGadget || knownGadgets.contains(purestSuperClass))) fprintf(out, " { &%s::staticMetaObject, ", purestSuperClass.constData()); else fprintf(out, " { Q_NULLPTR, "); diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp index 5506dc75c5..75349191d4 100644 --- a/src/tools/moc/moc.cpp +++ b/src/tools/moc/moc.cpp @@ -139,6 +139,12 @@ bool Moc::parseClassHead(ClassDef *def) def->superclassList += qMakePair(type, access); } } while (test(COMMA)); + + if (knownGadgets.contains(def->superclassList.first().first)) { + // Q_GADGET subclasses are treated as Q_GADGETs + knownGadgets.insert(def->classname, def->qualified); + knownGadgets.insert(def->qualified, def->qualified); + } } if (!test(LBRACE)) return false; |