diff options
author | Michael Brasser <michael.brasser@nokia.com> | 2009-12-11 01:39:11 (GMT) |
---|---|---|
committer | Michael Brasser <michael.brasser@nokia.com> | 2009-12-11 01:39:11 (GMT) |
commit | 8cda26604462a4941818b7c9574851d9a07acebf (patch) | |
tree | 7dff3f725ce8efabb4418568d1e56d0b6db0cf8f /src/declarative/qml | |
parent | cf01cfb8275c785d21eb5867c968cac1f54d296e (diff) | |
download | Qt-8cda26604462a4941818b7c9574851d9a07acebf.zip Qt-8cda26604462a4941818b7c9574851d9a07acebf.tar.gz Qt-8cda26604462a4941818b7c9574851d9a07acebf.tar.bz2 |
Throw error when attempting to write to a read-only property via script.
Diffstat (limited to 'src/declarative/qml')
-rw-r--r-- | src/declarative/qml/qmlobjectscriptclass.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/declarative/qml/qmlobjectscriptclass.cpp b/src/declarative/qml/qmlobjectscriptclass.cpp index 7a2b132..d7ab631 100644 --- a/src/declarative/qml/qmlobjectscriptclass.cpp +++ b/src/declarative/qml/qmlobjectscriptclass.cpp @@ -155,12 +155,8 @@ QmlObjectScriptClass::queryProperty(QObject *obj, const Identifier &name, lastData = &local; } - if (lastData) { - QScriptClass::QueryFlags rv = QScriptClass::HandlesReadAccess; - if (lastData->flags & QmlPropertyCache::Data::IsWritable) - rv |= QScriptClass::HandlesWriteAccess; - return rv; - } + if (lastData) + return QScriptClass::HandlesReadAccess | QScriptClass::HandlesWriteAccess; if (!evalContext && context()) { // Global object, QScriptContext activation object, QmlContext object @@ -267,6 +263,13 @@ void QmlObjectScriptClass::setProperty(QObject *obj, Q_ASSERT(obj); Q_ASSERT(lastData); + if (!(lastData->flags & QmlPropertyCache::Data::IsWritable)) { + QString error = QLatin1String("Cannot assign to read-only property \"") + + toString(name) + QLatin1Char('\"'); + if (context()) + context()->throwError(error); + } + QmlEnginePrivate *enginePriv = QmlEnginePrivate::get(engine); if (!evalContext && context()) { |