diff options
Diffstat (limited to 'src/tools/moc/moc.cpp')
-rw-r--r-- | src/tools/moc/moc.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp index 8ff481d5b1..2c3f795346 100644 --- a/src/tools/moc/moc.cpp +++ b/src/tools/moc/moc.cpp @@ -608,21 +608,27 @@ void Moc::parse() continue; while (inClass(&def) && hasNext()) { - if (next() == Q_OBJECT_TOKEN) { + switch (next()) { + case Q_OBJECT_TOKEN: def.hasQObject = true; break; + case Q_GADGET_TOKEN: + def.hasQGadget = true; + break; + default: break; } } - if (!def.hasQObject) + if (!def.hasQObject && !def.hasQGadget) continue; for (int i = namespaceList.size() - 1; i >= 0; --i) if (inNamespace(&namespaceList.at(i))) def.qualified.prepend(namespaceList.at(i).name + "::"); - knownQObjectClasses.insert(def.classname); - knownQObjectClasses.insert(def.qualified); + QHash<QByteArray, QByteArray> &classHash = def.hasQObject ? knownQObjectClasses : knownGadgets; + classHash.insert(def.classname, def.qualified); + classHash.insert(def.qualified, def.qualified); continue; } default: break; @@ -795,8 +801,9 @@ void Moc::parse() checkProperties(&def); classList += def; - knownQObjectClasses.insert(def.classname); - knownQObjectClasses.insert(def.qualified); + QHash<QByteArray, QByteArray> &classHash = def.hasQObject ? knownQObjectClasses : knownGadgets; + classHash.insert(def.classname, def.qualified); + classHash.insert(def.qualified, def.qualified); } } } @@ -896,7 +903,7 @@ void Moc::generate(FILE *out) fprintf(out, "QT_BEGIN_MOC_NAMESPACE\n"); for (i = 0; i < classList.size(); ++i) { - Generator generator(&classList[i], metaTypes, knownQObjectClasses, out); + Generator generator(&classList[i], metaTypes, knownQObjectClasses, knownGadgets, out); generator.generateCode(); } |