From 5633a2dbe3aba94292e1e3d03ccabe8cf25b802a Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Thu, 23 Sep 2010 17:18:03 -0300 Subject: Fixed AbstractMetaClassList::findEnumValue to search for the enum in all classes. --- abstractmetalang.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/abstractmetalang.cpp b/abstractmetalang.cpp index 4df4f2362..ed7934261 100644 --- a/abstractmetalang.cpp +++ b/abstractmetalang.cpp @@ -2216,15 +2216,22 @@ AbstractMetaEnumValue *AbstractMetaClassList::findEnumValue(const QString &name) { QStringList lst = name.split(QLatin1String("::")); - Q_ASSERT_X(lst.size() == 2, "AbstractMetaClassList::findEnumValue()", "Expected qualified enum"); + if (lst.size() > 1) { + QString prefixName = lst.at(0); + QString enumName = lst.at(1); + AbstractMetaClass* cl = findClass(prefixName); + if (cl) + return cl->findEnumValue(enumName, 0); + } - QString prefixName = lst.at(0); - QString enumName = lst.at(1); - - AbstractMetaClass *cl = findClass(prefixName); - if (cl) - return cl->findEnumValue(enumName, 0); + foreach(AbstractMetaClass* metaClass, *this) { + foreach(AbstractMetaEnum* metaEnum, metaClass->enums()) { + AbstractMetaEnumValue* enumValue = metaClass->findEnumValue(name, metaEnum); + if (enumValue) + return enumValue; + } + } ReportHandler::warning(QString("no matching enum '%1'").arg(name)); return 0; -- cgit v1.2.3