aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlobjectcreator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/qml/qqmlobjectcreator.cpp')
-rw-r--r--src/qml/qml/qqmlobjectcreator.cpp27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/qml/qml/qqmlobjectcreator.cpp b/src/qml/qml/qqmlobjectcreator.cpp
index 56776dcb82..3798129e8b 100644
--- a/src/qml/qml/qqmlobjectcreator.cpp
+++ b/src/qml/qml/qqmlobjectcreator.cpp
@@ -525,8 +525,14 @@ QObject *QmlObjectCreator::create(int subComponentIndex, QObject *parent)
context->setIdPropertyData(mapping);
if (subComponentIndex == -1) {
- foreach (QQmlScriptData *script, compiledData->scripts)
- context->importedScripts << script->scriptValueForContext(context);
+ QV4::ExecutionEngine *v4 = QV8Engine::getV4(engine);
+ QV4::Scope scope(v4);
+ QV4::ScopedObject scripts(scope, v4->newArrayObject(compiledData->scripts.count()));
+ for (int i = 0; i < compiledData->scripts.count(); ++i) {
+ QQmlScriptData *s = compiledData->scripts.at(i);
+ scripts->putIndexed(i, s->scriptValueForContext(context));
+ }
+ context->importedScripts = scripts;
} else if (parentContext) {
context->importedScripts = parentContext->importedScripts;
}
@@ -1004,8 +1010,7 @@ void QmlObjectCreator::setupBindings()
bool QmlObjectCreator::setPropertyValue(QQmlPropertyData *property, int bindingIndex, const QV4::CompiledData::Binding *binding)
{
if (binding->type == QV4::CompiledData::Binding::Type_AttachedProperty) {
- const QV4::CompiledData::Object *obj = qmlUnit->objectAt(binding->value.objectIndex);
- Q_ASSERT(stringAt(obj->inheritedTypeNameIndex).isEmpty());
+ Q_ASSERT(stringAt(qmlUnit->objectAt(binding->value.objectIndex)->inheritedTypeNameIndex).isEmpty());
QQmlType *attachedType = resolvedTypes.value(binding->propertyNameIndex).type;
const int id = attachedType->attachedPropertiesId();
QObject *qmlObject = qmlAttachedPropertiesObjectById(id, _qobject);
@@ -1260,7 +1265,7 @@ QObject *QmlObjectCreator::createInstance(int index, QObject *parent)
}
QQmlData *ddata = QQmlData::get(instance, /*create*/true);
- if (index == qmlUnit->indexOfRootObject) {
+ if (static_cast<quint32>(index) == qmlUnit->indexOfRootObject) {
if (ddata->context) {
Q_ASSERT(ddata->context != context);
Q_ASSERT(ddata->outerContext);
@@ -1427,7 +1432,7 @@ bool QQmlComponentAndAliasResolver::resolve()
// when someProperty _is_ a QQmlComponent. In that case the Item {}
// should be implicitly surrounded by Component {}
- for (int i = 0; i < qmlUnit->nObjects; ++i) {
+ for (quint32 i = 0; i < qmlUnit->nObjects; ++i) {
const QV4::CompiledData::Object *obj = qmlUnit->objectAt(i);
if (stringAt(obj->inheritedTypeNameIndex).isEmpty())
continue;
@@ -1511,14 +1516,14 @@ bool QQmlComponentAndAliasResolver::collectIdsAndAliases(int objectIndex)
}
const QV4::CompiledData::Property *property = obj->propertyTable();
- for (int i = 0; i < obj->nProperties; ++i, ++property)
+ for (quint32 i = 0; i < obj->nProperties; ++i, ++property)
if (property->type == QV4::CompiledData::Property::Alias) {
_objectsWithAliases.append(objectIndex);
break;
}
const QV4::CompiledData::Binding *binding = obj->bindingTable();
- for (int i = 0; i < obj->nBindings; ++i, ++binding) {
+ for (quint32 i = 0; i < obj->nBindings; ++i, ++binding) {
if (binding->type != QV4::CompiledData::Binding::Type_Object
&& binding->type != QV4::CompiledData::Binding::Type_AttachedProperty
&& binding->type != QV4::CompiledData::Binding::Type_GroupProperty)
@@ -1694,7 +1699,7 @@ QQmlPropertyValidator::QQmlPropertyValidator(const QUrl &url, const QV4::Compile
bool QQmlPropertyValidator::validate()
{
- for (int i = 0; i < qmlUnit->nObjects; ++i) {
+ for (quint32 i = 0; i < qmlUnit->nObjects; ++i) {
const QV4::CompiledData::Object *obj = qmlUnit->objectAt(i);
if (stringAt(obj->inheritedTypeNameIndex).isEmpty())
continue;
@@ -1718,7 +1723,7 @@ bool QQmlPropertyValidator::validateObject(const QV4::CompiledData::Object *obj,
QQmlPropertyData *defaultProperty = propertyCache->defaultProperty();
const QV4::CompiledData::Binding *binding = obj->bindingTable();
- for (int i = 0; i < obj->nBindings; ++i, ++binding) {
+ for (quint32 i = 0; i < obj->nBindings; ++i, ++binding) {
if (binding->type == QV4::CompiledData::Binding::Type_AttachedProperty
|| binding->type == QV4::CompiledData::Binding::Type_GroupProperty)
continue;
@@ -1754,4 +1759,6 @@ bool QQmlPropertyValidator::validateObject(const QV4::CompiledData::Object *obj,
}
}
}
+
+ return true;
}