aboutsummaryrefslogtreecommitdiffstats
path: root/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2011-06-23 19:46:43 +0200
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>2011-06-23 19:47:50 +0200
commit1d78e594d8d3d895a1961fdf105f0af68d5fcc2e (patch)
tree873c7f648c86ca599fbe81e849e37bd6266c027c /share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp
parent1f8de24e2c3f43ba743e5ef6f057db927aaf50e7 (diff)
parent568985ab0325ae1db633ecf3ca40b9ba6929313a (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.cpp24
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();