summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/script/api/qscriptclass.cpp3
-rw-r--r--src/script/bridge/qscriptclassobject.cpp15
2 files changed, 14 insertions, 4 deletions
diff --git a/src/script/api/qscriptclass.cpp b/src/script/api/qscriptclass.cpp
index 98cc834..703ba32 100644
--- a/src/script/api/qscriptclass.cpp
+++ b/src/script/api/qscriptclass.cpp
@@ -13,9 +13,6 @@
#ifndef QT_NO_SCRIPT
-// ### Q_DECLARE_METATYPE(QScriptContext*)
-Q_DECLARE_METATYPE(QScriptValueList)
-
QT_BEGIN_NAMESPACE
/*!
diff --git a/src/script/bridge/qscriptclassobject.cpp b/src/script/bridge/qscriptclassobject.cpp
index 62364f3..277754e 100644
--- a/src/script/bridge/qscriptclassobject.cpp
+++ b/src/script/bridge/qscriptclassobject.cpp
@@ -16,8 +16,10 @@
#include "../api/qscriptengine.h"
#include "../api/qscriptengine_p.h"
#include "../api/qscriptclass.h"
+#include "../api/qscriptclasspropertyiterator.h"
#include "Error.h"
+#include "PropertyNameArray.h"
Q_DECLARE_METATYPE(QScriptContext*)
Q_DECLARE_METATYPE(QScriptValue)
@@ -29,6 +31,7 @@ namespace QScript
{
QString qtStringFromJSCUString(const JSC::UString &str);
+JSC::UString qtStringToJSCUString(const QString &str);
ClassObjectDelegate::ClassObjectDelegate(QScriptClass *scriptClass)
: m_scriptClass(scriptClass)
@@ -145,7 +148,17 @@ bool ClassObjectDelegate::getPropertyAttributes(const QScriptObject* object, JSC
void ClassObjectDelegate::getPropertyNames(QScriptObject* object, JSC::ExecState *exec,
JSC::PropertyNameArray &propertyNames)
{
- qWarning("Enumeration of custom script objects not implemented");
+ QScriptEnginePrivate *engine = static_cast<QScript::GlobalObject*>(exec->lexicalGlobalObject())->engine;
+ QScriptValue scriptObject = engine->scriptValueFromJSCValue(object);
+ QScriptClassPropertyIterator *it = m_scriptClass->newIterator(scriptObject);
+ if (it != 0) {
+ while (it->hasNext()) {
+ it->next();
+ QString name = it->name().toString();
+ propertyNames.add(JSC::Identifier(exec, qtStringToJSCUString(name)));
+ }
+ delete it;
+ }
QScriptObjectDelegate::getPropertyNames(object, exec, propertyNames);
}