summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/qml/qdeclarativeobjectscriptclass.cpp')
-rw-r--r--src/declarative/qml/qdeclarativeobjectscriptclass.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
index aca01b2..7c818a6 100644
--- a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
+++ b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
@@ -93,6 +93,7 @@ QDeclarativeObjectScriptClass::QDeclarativeObjectScriptClass(QDeclarativeEngine
m_destroyId = createPersistentIdentifier(QLatin1String("destroy"));
m_toString = scriptEngine->newFunction(tostring);
m_toStringId = createPersistentIdentifier(QLatin1String("toString"));
+ m_valueOfId = createPersistentIdentifier(QLatin1String("valueOf"));
}
QDeclarativeObjectScriptClass::~QDeclarativeObjectScriptClass()
@@ -157,7 +158,8 @@ QDeclarativeObjectScriptClass::queryProperty(QObject *obj, const Identifier &nam
lastTNData = 0;
if (name == m_destroyId.identifier ||
- name == m_toStringId.identifier)
+ name == m_toStringId.identifier ||
+ name == m_valueOfId.identifier)
return QScriptClass::HandlesReadAccess;
if (!obj)
@@ -201,21 +203,27 @@ QDeclarativeObjectScriptClass::queryProperty(QObject *obj, const Identifier &nam
QDeclarativeObjectScriptClass::Value
QDeclarativeObjectScriptClass::property(Object *object, const Identifier &name)
{
- return property(toQObject(object), name);
+ return property(toQObject(object), name, context());
}
QDeclarativeObjectScriptClass::Value
-QDeclarativeObjectScriptClass::property(QObject *obj, const Identifier &name)
+QDeclarativeObjectScriptClass::property(QObject *obj, const Identifier &name, QScriptContext *context)
{
+ Q_ASSERT(context);
+
QScriptEngine *scriptEngine = QDeclarativeEnginePrivate::getScriptEngine(engine);
if (name == m_destroyId.identifier)
return Value(scriptEngine, m_destroy);
- else if (name == m_toStringId.identifier)
+ else if (name == m_toStringId.identifier ||
+ name == m_valueOfId.identifier)
return Value(scriptEngine, m_toString);
- if (lastData && !lastData->isValid())
- return Value();
+ if (lastData && !lastData->isValid()) {
+ QString error = QLatin1String("Cannot access non-existent property \"") +
+ toString(name) + QLatin1Char('\"');
+ return Value(scriptEngine, context->throwError(error));
+ }
Q_ASSERT(obj);