diff options
Diffstat (limited to 'src/declarative/qml')
-rw-r--r-- | src/declarative/qml/qmlscriptparser.cpp | 10 | ||||
-rw-r--r-- | src/declarative/qml/qmlscriptparser_p.h | 4 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/declarative/qml/qmlscriptparser.cpp b/src/declarative/qml/qmlscriptparser.cpp index 950b357..6d49d3f 100644 --- a/src/declarative/qml/qmlscriptparser.cpp +++ b/src/declarative/qml/qmlscriptparser.cpp @@ -193,6 +193,16 @@ Object *ProcessAST::defineObjectBinding(int line, if (! _parser->tree()) { _parser->setTree(obj); + + if (!_parser->scriptFile().isEmpty()) { + _stateStack.pushObject(obj); + Object *scriptObject= defineObjectBinding(line, 0, QLatin1String("Script")); + _stateStack.pushObject(scriptObject); + defineProperty(QLatin1String("src"), line, _parser->scriptFile()); + _stateStack.pop(); // scriptObject + _stateStack.pop(); // object + } + } else { const State state = _stateStack.top(); Value *v = new Value; diff --git a/src/declarative/qml/qmlscriptparser_p.h b/src/declarative/qml/qmlscriptparser_p.h index b24662e..6c7c0f1 100644 --- a/src/declarative/qml/qmlscriptparser_p.h +++ b/src/declarative/qml/qmlscriptparser_p.h @@ -31,12 +31,16 @@ public: int findOrCreateTypeId(const QString &name); void setTree(QmlParser::Object *tree); + void setScriptFile(const QString &filename) {_scriptFile = filename; } + QString scriptFile() const { return _scriptFile; } + private: QMap<QString,QString> _nameSpacePaths; QmlParser::Object *root; QStringList _typeNames; QString _error; int _errorLine; + QString _scriptFile; }; QT_END_NAMESPACE |