diff options
author | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2011-06-23 19:46:43 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2011-06-23 19:47:50 +0200 |
commit | 1d78e594d8d3d895a1961fdf105f0af68d5fcc2e (patch) | |
tree | 873c7f648c86ca599fbe81e849e37bd6266c027c /share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp | |
parent | 1f8de24e2c3f43ba743e5ef6f057db927aaf50e7 (diff) | |
parent | 568985ab0325ae1db633ecf3ca40b9ba6929313a (diff) |
Merge branch '2.2'
Conflicts:
qtcreator.pri
share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp
src/libs/qmljs/qmljsdocument.cpp
src/libs/qmljs/qmljsinterpreter.cpp
src/libs/qmljs/qmljsinterpreter.h
src/libs/qmljs/qmljslink.cpp
src/plugins/cppeditor/cppquickfixes.cpp
src/plugins/qmldesigner/extrasplugin/extrasplugin.cpp
src/plugins/qmldesigner/qmldesigner.pro
src/plugins/qmldesigner/symbianplugin/symbian.metainfo
src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h
Change-Id: Id5f754e2837a3bb3e0687ed09f1dda45fd0c5617
Diffstat (limited to 'share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp')
-rw-r--r-- | share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp index d4d6204c7b..6b93c7e81e 100644 --- a/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp @@ -50,6 +50,7 @@ #include <QGraphicsObject> #include <QTextDocument> +#include <QLibraryInfo> #include <private/qdeclarativebinding_p.h> #include <private/qdeclarativemetatype_p.h> @@ -768,10 +769,31 @@ QObject *ObjectNodeInstance::createComponentWrap(const QString &nodeSource, cons return object; } +//The component might also be shipped with Creator. +//To avoid trouble with import "." we use the component shipped with Creator. +static inline QString fixComponentPathForIncompatibleQt(const QString &componentPath) +{ + QString result = componentPath; + const QLatin1String importString("import"); + + if (componentPath.contains(importString)) { + int index = componentPath.indexOf(importString) + 7; + const QString relativeImportPath = componentPath.right(componentPath.length() - index); + QString fixedComponentPath = QLibraryInfo::location(QLibraryInfo::ImportsPath) + relativeImportPath; + fixedComponentPath.replace(QLatin1Char('\\'), QLatin1Char('/')); + if (QFileInfo(fixedComponentPath).exists()) + return fixedComponentPath; + } + + return result; + +} + QObject *ObjectNodeInstance::createComponent(const QString &componentPath, QDeclarativeContext *context) { - QDeclarativeComponent component(context->engine(), QUrl::fromLocalFile(componentPath)); + QDeclarativeComponent component(context->engine(), QUrl::fromLocalFile(fixComponentPathForIncompatibleQt(componentPath))); QObject *object = component.beginCreate(context); + tweakObjects(object); component.completeCreate(); |