diff options
-rw-r--r-- | src/qml/debugger/qqmldebugservice.cpp | 2 | ||||
-rw-r--r-- | src/qml/debugger/qqmlenginedebugservice.cpp | 4 | ||||
-rw-r--r-- | src/qml/qml/qqmlbinding.cpp | 4 | ||||
-rw-r--r-- | src/qml/qml/qqmlcontext.cpp | 26 | ||||
-rw-r--r-- | src/qml/qml/qqmlcontext_p.h | 8 | ||||
-rw-r--r-- | src/qml/qml/qqmlcontextwrapper.cpp | 3 | ||||
-rw-r--r-- | src/qml/qml/qqmlexpression.cpp | 4 | ||||
-rw-r--r-- | src/qml/qml/qqmlinfo.cpp | 2 | ||||
-rw-r--r-- | src/qml/qml/qqmlobjectcreator.cpp | 8 | ||||
-rw-r--r-- | src/qml/qml/qqmltypeloader.cpp | 4 | ||||
-rw-r--r-- | src/qml/qml/v8/qqmlbuiltinfunctions.cpp | 2 | ||||
-rw-r--r-- | src/quick/items/qquickwindowmodule.cpp | 4 | ||||
-rw-r--r-- | src/quick/util/qquickpropertychanges.cpp | 4 |
13 files changed, 45 insertions, 30 deletions
diff --git a/src/qml/debugger/qqmldebugservice.cpp b/src/qml/debugger/qqmldebugservice.cpp index f3ba20538d..b37a7335a0 100644 --- a/src/qml/debugger/qqmldebugservice.cpp +++ b/src/qml/debugger/qqmldebugservice.cpp @@ -215,7 +215,7 @@ QList<QObject*> QQmlDebugService::objectForLocationInfo(const QString &filename, } else { QQmlData *ddata = QQmlData::get(iter.value()); if (ddata && ddata->outerContext) { - if (QFileInfo(ddata->outerContext->urlString).fileName() == filename && + if (QFileInfo(ddata->outerContext->urlString()).fileName() == filename && ddata->lineNumber == lineNumber && ddata->columnNumber >= columnNumber) { objects << *iter; diff --git a/src/qml/debugger/qqmlenginedebugservice.cpp b/src/qml/debugger/qqmlenginedebugservice.cpp index b0c0995a44..da01d00f17 100644 --- a/src/qml/debugger/qqmlenginedebugservice.cpp +++ b/src/qml/debugger/qqmlenginedebugservice.cpp @@ -391,7 +391,7 @@ QQmlEngineDebugService::objectData(QObject *object) QQmlData *ddata = QQmlData::get(object); QQmlObjectData rv; if (ddata && ddata->outerContext) { - rv.url = ddata->outerContext->url; + rv.url = ddata->outerContext->url(); rv.lineNumber = ddata->lineNumber; rv.columnNumber = ddata->columnNumber; } else { @@ -762,7 +762,7 @@ bool QQmlEngineDebugService::setMethodBody(int objectId, const QString &method, int lineNumber = vmeMetaObject->vmeMethodLineNumber(prop->coreIndex); QV4::ExecutionEngine *v4 = QV8Engine::getV4(qmlEngine(object)->handle()); QV4::Scope scope(v4); - QV4::ScopedValue v(scope, QQmlExpressionPrivate::evalFunction(contextData, object, jsfunction, contextData->url.toString(), lineNumber)); + QV4::ScopedValue v(scope, QQmlExpressionPrivate::evalFunction(contextData, object, jsfunction, contextData->urlString(), lineNumber)); vmeMetaObject->setVmeMethod(prop->coreIndex, v); return true; } diff --git a/src/qml/qml/qqmlbinding.cpp b/src/qml/qml/qqmlbinding.cpp index 0db696394c..f223d099e4 100644 --- a/src/qml/qml/qqmlbinding.cpp +++ b/src/qml/qml/qqmlbinding.cpp @@ -93,8 +93,8 @@ QQmlBinding::QQmlBinding(const QQmlScriptString &script, QObject *obj, QQmlConte QQmlContextData *ctxtdata = QQmlContextData::get(scriptPrivate->context); QQmlEnginePrivate *engine = QQmlEnginePrivate::get(scriptPrivate->context->engine()); - if (engine && ctxtdata && !ctxtdata->url.isEmpty() && ctxtdata->typeCompilationUnit) { - url = ctxtdata->url.toString(); + if (engine && ctxtdata && !ctxtdata->urlString().isEmpty() && ctxtdata->typeCompilationUnit) { + url = ctxtdata->urlString(); if (scriptPrivate->bindingId != QQmlBinding::Invalid) runtimeFunction = ctxtdata->typeCompilationUnit->runtimeFunctions.at(scriptPrivate->bindingId); } diff --git a/src/qml/qml/qqmlcontext.cpp b/src/qml/qml/qqmlcontext.cpp index e641226b90..3e6ca6667e 100644 --- a/src/qml/qml/qqmlcontext.cpp +++ b/src/qml/qml/qqmlcontext.cpp @@ -426,14 +426,14 @@ QUrl QQmlContextData::resolvedUrl(const QUrl &src) if (src.isRelative() && !src.isEmpty()) { if (ctxt) { while(ctxt) { - if(ctxt->url.isValid()) + if (ctxt->url().isValid()) break; else ctxt = ctxt->parent; } if (ctxt) - resolved = ctxt->url.resolved(src); + resolved = ctxt->url().resolved(src); else if (engine) resolved = engine->baseUrl().resolved(src); } @@ -462,8 +462,8 @@ void QQmlContext::setBaseUrl(const QUrl &baseUrl) { Q_D(QQmlContext); - d->data->url = baseUrl; - d->data->urlString = baseUrl.toString(); + d->data->baseUrl = baseUrl; + d->data->baseUrlString = baseUrl.toString(); } /*! @@ -474,11 +474,11 @@ QUrl QQmlContext::baseUrl() const { Q_D(const QQmlContext); const QQmlContextData* data = d->data; - while (data && data->url.isEmpty()) + while (data && data->url().isEmpty()) data = data->parent; if (data) - return data->url; + return data->url(); else return QUrl(); } @@ -816,4 +816,18 @@ QV4::IdentifierHash<int> &QQmlContextData::propertyNames() const return propertyNameCache; } +QUrl QQmlContextData::url() const +{ + if (typeCompilationUnit) + return typeCompilationUnit->url(); + return baseUrl; +} + +QString QQmlContextData::urlString() const +{ + if (typeCompilationUnit) + return typeCompilationUnit->fileName(); + return baseUrlString; +} + QT_END_NAMESPACE diff --git a/src/qml/qml/qqmlcontext_p.h b/src/qml/qml/qqmlcontext_p.h index ddf7d5de75..40bd310cb7 100644 --- a/src/qml/qml/qqmlcontext_p.h +++ b/src/qml/qml/qqmlcontext_p.h @@ -162,9 +162,11 @@ public: // Any script blocks that exist on this context QV4::PersistentValue importedScripts; // This is a JS Array - // Context base url - QUrl url; - QString urlString; + QUrl baseUrl; + QString baseUrlString; + + QUrl url() const; + QString urlString() const; // List of imports that apply to this context QQmlTypeNameCache *imports; diff --git a/src/qml/qml/qqmlcontextwrapper.cpp b/src/qml/qml/qqmlcontextwrapper.cpp index 7aca9ad6c2..b2d03bc188 100644 --- a/src/qml/qml/qqmlcontextwrapper.cpp +++ b/src/qml/qml/qqmlcontextwrapper.cpp @@ -82,7 +82,8 @@ ReturnedValue QmlContextWrapper::urlScope(ExecutionEngine *v4, const QUrl &url) Scope scope(v4); QQmlContextData *context = new QQmlContextData; - context->url = url; + context->baseUrl = url; + context->baseUrlString = url.toString(); context->isInternal = true; context->isJSContext = true; diff --git a/src/qml/qml/qqmlexpression.cpp b/src/qml/qml/qqmlexpression.cpp index 18f882e1e0..35e0bc8c64 100644 --- a/src/qml/qml/qqmlexpression.cpp +++ b/src/qml/qml/qqmlexpression.cpp @@ -149,8 +149,8 @@ QQmlExpression::QQmlExpression(const QQmlScriptString &script, QQmlContext *ctxt if (scriptPrivate->context) { QQmlContextData *ctxtdata = QQmlContextData::get(scriptPrivate->context); QQmlEnginePrivate *engine = QQmlEnginePrivate::get(scriptPrivate->context->engine()); - if (engine && ctxtdata && !ctxtdata->url.isEmpty() && ctxtdata->typeCompilationUnit) { - d->url = ctxtdata->url.toString(); + if (engine && ctxtdata && !ctxtdata->urlString().isEmpty() && ctxtdata->typeCompilationUnit) { + d->url = ctxtdata->urlString(); d->line = scriptPrivate->lineNumber; d->column = scriptPrivate->columnNumber; diff --git a/src/qml/qml/qqmlinfo.cpp b/src/qml/qml/qqmlinfo.cpp index 85979b8dc0..b9f96a724c 100644 --- a/src/qml/qml/qqmlinfo.cpp +++ b/src/qml/qml/qqmlinfo.cpp @@ -140,7 +140,7 @@ QQmlInfo::~QQmlInfo() QQmlData *ddata = QQmlData::get(object, false); if (ddata && ddata->outerContext) { - error.setUrl(ddata->outerContext->url); + error.setUrl(ddata->outerContext->url()); error.setLine(ddata->lineNumber); error.setColumn(ddata->columnNumber); } diff --git a/src/qml/qml/qqmlobjectcreator.cpp b/src/qml/qml/qqmlobjectcreator.cpp index 6b815677a3..e7a08773f4 100644 --- a/src/qml/qml/qqmlobjectcreator.cpp +++ b/src/qml/qml/qqmlobjectcreator.cpp @@ -175,8 +175,6 @@ QObject *QQmlObjectCreator::create(int subComponentIndex, QObject *parent, QQmlI context = new QQmlContextData; context->isInternal = true; - context->url = compiledData->url(); - context->urlString = compiledData->fileName(); context->imports = compiledData->importCache; context->imports->addref(); context->typeCompilationUnit = compiledData->compilationUnit; @@ -1050,7 +1048,7 @@ QObject *QQmlObjectCreator::createInstance(int index, QObject *parent, bool isCo isComponent = true; QQmlComponent *component = new QQmlComponent(engine, compiledData, index, parent); Q_QML_OC_PROFILE(sharedState->profiler, profiler.update(QStringLiteral("<component>"), - context->url, obj->location.line, obj->location.column)); + context->url(), obj->location.line, obj->location.column)); QQmlComponentPrivate::get(component)->creationContext = context; instance = component; ddata = QQmlData::get(instance, /*create*/true); @@ -1061,7 +1059,7 @@ QObject *QQmlObjectCreator::createInstance(int index, QObject *parent, bool isCo QQmlType *type = typeRef->type; if (type) { Q_QML_OC_PROFILE(sharedState->profiler, profiler.update(type->qmlTypeName(), - context->url, obj->location.line, obj->location.column)); + context->url(), obj->location.line, obj->location.column)); instance = type->create(); if (!instance) { recordError(obj->location, tr("Unable to create object of type %1").arg(stringAt(obj->inheritedTypeNameIndex))); @@ -1084,7 +1082,7 @@ QObject *QQmlObjectCreator::createInstance(int index, QObject *parent, bool isCo } else { Q_ASSERT(typeRef->component); Q_QML_OC_PROFILE(sharedState->profiler, profiler.update(typeRef->component->fileName(), - context->url, obj->location.line, obj->location.column)); + context->url(), obj->location.line, obj->location.column)); if (typeRef->component->compilationUnit->data->isSingleton()) { recordError(obj->location, tr("Composite Singleton Type %1 is not creatable").arg(stringAt(obj->inheritedTypeNameIndex))); diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp index 0bf8043cdb..d713e9ee03 100644 --- a/src/qml/qml/qqmltypeloader.cpp +++ b/src/qml/qml/qqmltypeloader.cpp @@ -2478,8 +2478,8 @@ QV4::PersistentValue QQmlScriptData::scriptValueForContext(QQmlContextData *pare ctxt->isPragmaLibraryContext = true; else ctxt->isPragmaLibraryContext = parentCtxt->isPragmaLibraryContext; - ctxt->url = url; - ctxt->urlString = urlString; + ctxt->baseUrl = url; + ctxt->baseUrlString = urlString; // For backward compatibility, if there are no imports, we need to use the // imports from the parent context. See QTBUG-17518. diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp index 0522e4c0ed..58542e4479 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp +++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp @@ -1722,7 +1722,7 @@ ReturnedValue GlobalExtensions::method_qsTr(CallContext *ctx) QV8Engine *v8engine = ctx->d()->engine->v8Engine; QString context; if (QQmlContextData *ctxt = v8engine->callingContext()) { - QString path = ctxt->url.toString(); + QString path = ctxt->urlString(); int lastSlash = path.lastIndexOf(QLatin1Char('/')); int lastDot = path.lastIndexOf(QLatin1Char('.')); int length = lastDot - (lastSlash + 1); diff --git a/src/quick/items/qquickwindowmodule.cpp b/src/quick/items/qquickwindowmodule.cpp index 414f068285..5c66a2ef84 100644 --- a/src/quick/items/qquickwindowmodule.cpp +++ b/src/quick/items/qquickwindowmodule.cpp @@ -143,9 +143,9 @@ void QQuickWindowQmlImpl::setWindowVisibility() error.setObject(this); const QQmlContextData* urlContext = data->context; - while (urlContext && urlContext->url.isEmpty()) + while (urlContext && urlContext->url().isEmpty()) urlContext = urlContext->parent; - error.setUrl(urlContext ? urlContext->url : QUrl()); + error.setUrl(urlContext ? urlContext->url() : QUrl()); QString objectId = data->context->findObjectId(this); if (!objectId.isEmpty()) diff --git a/src/quick/util/qquickpropertychanges.cpp b/src/quick/util/qquickpropertychanges.cpp index 4e96d90fde..6c333c6b13 100644 --- a/src/quick/util/qquickpropertychanges.cpp +++ b/src/quick/util/qquickpropertychanges.cpp @@ -295,8 +295,8 @@ void QQuickPropertyChangesPrivate::decodeBinding(const QString &propertyPrefix, int column = -1; QQmlData *ddata = QQmlData::get(q); - if (ddata && ddata->outerContext && !ddata->outerContext->url.isEmpty()) { - url = ddata->outerContext->url; + if (ddata && ddata->outerContext && !ddata->outerContext->url().isEmpty()) { + url = ddata->outerContext->url(); line = ddata->lineNumber; column = ddata->columnNumber; } |