summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2009-12-11 01:39:11 (GMT)
committerMichael Brasser <michael.brasser@nokia.com>2009-12-11 01:39:11 (GMT)
commit8cda26604462a4941818b7c9574851d9a07acebf (patch)
tree7dff3f725ce8efabb4418568d1e56d0b6db0cf8f /src/declarative/qml
parentcf01cfb8275c785d21eb5867c968cac1f54d296e (diff)
downloadQt-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.cpp15
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()) {