diff --git a/src/imports/imports.pro b/src/imports/imports.pro index b62275b009df4f500d68a2ba24860e201c046aff..f7861ac00971ff03c3251d281be2b2439a285c3c 100644 --- a/src/imports/imports.pro +++ b/src/imports/imports.pro @@ -1,5 +1,5 @@ TEMPLATE = subdirs -SUBDIRS += qtquick2 folderlistmodel localstorage +SUBDIRS += qtquick2 particles window folderlistmodel localstorage contains(QT_CONFIG, qmltest): SUBDIRS += testlib contains(QT_CONFIG, xmlpatterns) : SUBDIRS += xmllistmodel diff --git a/src/imports/particles/particles.pro b/src/imports/particles/particles.pro new file mode 100644 index 0000000000000000000000000000000000000000..dc3198d124da431c69a481f9efefdb0bf51f69b5 --- /dev/null +++ b/src/imports/particles/particles.pro @@ -0,0 +1,19 @@ +TARGET = particlesplugin +TARGETPATH = QtQuick/Particles.2 +include(../qimportbase.pri) + +SOURCES += \ + plugin.cpp + +QT += quick-private qml-private + +OTHER_FILES += \ + qmldir + +DESTDIR = $$QT.qml.imports/$$TARGETPATH +target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH + +qmldir.files += $$PWD/qmldir +qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH + +INSTALLS += target qmldir diff --git a/src/imports/particles/plugin.cpp b/src/imports/particles/plugin.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b5680b5ed1894df406d1c1c711c2f26c4e73d603 --- /dev/null +++ b/src/imports/particles/plugin.cpp @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtQml/qqmlextensionplugin.h> + +#include <private/qquickparticlesmodule_p.h> + +QT_BEGIN_NAMESPACE + +//![class decl] +class QtQuick2ParticlesPlugin : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0") +public: + virtual void registerTypes(const char *uri) + { + Q_ASSERT(QLatin1String(uri) == QLatin1String("QtQuick.Particles")); + Q_UNUSED(uri); + QQuickParticlesModule::defineModule(); + } +}; +//![class decl] + +QT_END_NAMESPACE + +#include "plugin.moc" diff --git a/src/imports/particles/qmldir b/src/imports/particles/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..593915f83f261127696491b0b9712ffa15ae74c4 --- /dev/null +++ b/src/imports/particles/qmldir @@ -0,0 +1 @@ +plugin particlesplugin diff --git a/src/imports/window/plugin.cpp b/src/imports/window/plugin.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b0c8c90890992c7f2021de6d7db33be371def18e --- /dev/null +++ b/src/imports/window/plugin.cpp @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtQml/qqmlextensionplugin.h> + +#include <private/qquickwindowmodule_p.h> + +QT_BEGIN_NAMESPACE + +//![class decl] +class QtQuick2WindowPlugin : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0") +public: + virtual void registerTypes(const char *uri) + { + Q_ASSERT(QLatin1String(uri) == QLatin1String("QtQuick.Window")); + Q_UNUSED(uri); + QQuickWindowModule::defineModule(); + } +}; +//![class decl] + +QT_END_NAMESPACE + +#include "plugin.moc" diff --git a/src/imports/window/qmldir b/src/imports/window/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..32844a6ed660cde67f01e294186a93792caedefe --- /dev/null +++ b/src/imports/window/qmldir @@ -0,0 +1 @@ +plugin windowplugin diff --git a/src/imports/window/window.pro b/src/imports/window/window.pro new file mode 100644 index 0000000000000000000000000000000000000000..42b6f5911dc189c30f2ef5275a622c5d94583e5b --- /dev/null +++ b/src/imports/window/window.pro @@ -0,0 +1,19 @@ +TARGET = windowplugin +TARGETPATH = QtQuick/Window.2 +include(../qimportbase.pri) + +SOURCES += \ + plugin.cpp + +QT += quick-private qml-private + +OTHER_FILES += \ + qmldir + +DESTDIR = $$QT.qml.imports/$$TARGETPATH +target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH + +qmldir.files += $$PWD/qmldir +qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH + +INSTALLS += target qmldir diff --git a/src/qml/qml/qqmlscript.cpp b/src/qml/qml/qqmlscript.cpp index 5104ba897946aeca1f5927294913d71f9aaab914..900dd04863b742800bef15edfa02cc5e5c314207 100644 --- a/src/qml/qml/qqmlscript.cpp +++ b/src/qml/qml/qqmlscript.cpp @@ -1345,11 +1345,6 @@ bool QQmlScript::Parser::parse(const QByteArray &qmldata, const QUrl &url, _errors[ii].setUrl(url); } - if (_errors.isEmpty()) { - // Sort the imports into desired order - qStableSort(_imports.begin(), _imports.end()); - } - return _errors.isEmpty(); } diff --git a/src/qml/qml/qqmlscript_p.h b/src/qml/qml/qqmlscript_p.h index debe89437624a276d0f3b3821f2b993b6cc3a199..ddf4c9a3921c0cc1f775922eb0ede2a3d1277524 100644 --- a/src/qml/qml/qqmlscript_p.h +++ b/src/qml/qml/qqmlscript_p.h @@ -121,11 +121,6 @@ public: void extractVersion(int *maj, int *min) const; QQmlScript::LocationSpan location; - - bool operator<(const Import& other) const { - // Shorter URIs first, so 'import X' is before 'import X.Y' - return (uri.length() < other.uri.length()); - } }; class Object; diff --git a/src/quick/items/qquickwindowmodule_p.h b/src/quick/items/qquickwindowmodule_p.h index 72fd2b32bdd395afcc330ccea5758a181438468e..156ccec127d2b1bc84a6ba44769f4f920529fae2 100644 --- a/src/quick/items/qquickwindowmodule_p.h +++ b/src/quick/items/qquickwindowmodule_p.h @@ -42,14 +42,14 @@ #ifndef QQUICKWINDOWMODULE_H #define QQUICKWINDOWMODULE_H -#include <qqml.h> +#include <private/qtquickglobal_p.h> QT_BEGIN_HEADER QT_BEGIN_NAMESPACE -class QQuickWindowModule +class Q_QUICK_PRIVATE_EXPORT QQuickWindowModule { public: static void defineModule(); diff --git a/src/quick/particles/qquickparticlesmodule_p.h b/src/quick/particles/qquickparticlesmodule_p.h index b7cf09919e7cffff4319c51795882865a3e1ef93..23a40488cfbaaf448da87aa31a498051eb96c2c7 100644 --- a/src/quick/particles/qquickparticlesmodule_p.h +++ b/src/quick/particles/qquickparticlesmodule_p.h @@ -39,16 +39,16 @@ ** ****************************************************************************/ -#ifndef QQuickPARTICLESMODULE_H -#define QQuickPARTICLESMODULE_H +#ifndef QQUICKPARTICLESMODULE_H +#define QQUICKPARTICLESMODULE_H -#include <qqml.h> +#include <private/qtquickglobal_p.h> QT_BEGIN_HEADER QT_BEGIN_NAMESPACE -class QQuickParticlesModule +class Q_QUICK_PRIVATE_EXPORT QQuickParticlesModule { public: static void defineModule(); @@ -58,4 +58,4 @@ QT_END_NAMESPACE QT_END_HEADER -#endif // QQuickPARTICLESMODULE_H +#endif // QQUICKPARTICLESMODULE_H diff --git a/src/quick/qtquick2.cpp b/src/quick/qtquick2.cpp index a97dade10699523d0ad5d22ffbb2a50b1edb2275..3e04a12d58b10b9654873524230f6a13e4911ac5 100644 --- a/src/quick/qtquick2.cpp +++ b/src/quick/qtquick2.cpp @@ -44,8 +44,6 @@ #include <private/qquickutilmodule_p.h> #include <private/qqmlvaluetype_p.h> #include <private/qquickitemsmodule_p.h> -#include <private/qquickparticlesmodule_p.h> -#include <private/qquickwindowmodule_p.h> #include <private/qqmlenginedebugservice_p.h> #include <private/qqmldebugstatesdelegate_p.h> @@ -175,8 +173,6 @@ void QQmlQtQuick2Module::defineModule() QQuickUtilModule::defineModule(); QQmlEnginePrivate::defineModule(); QQuickItemsModule::defineModule(); - QQuickParticlesModule::defineModule(); - QQuickWindowModule::defineModule(); QQmlValueTypeFactory::registerValueTypes(); if (QQmlEngineDebugService::isDebuggingEnabled()) { diff --git a/tests/auto/qml/qqmllanguage/data/lib/com/nokia/installedtest0/InstalledTest3.qml b/tests/auto/qml/qqmllanguage/data/lib/com/nokia/installedtest0/InstalledTest3.qml deleted file mode 100644 index 26a5d6bba9626cc8dc08f65ba5d8d972ae593923..0000000000000000000000000000000000000000 --- a/tests/auto/qml/qqmllanguage/data/lib/com/nokia/installedtest0/InstalledTest3.qml +++ /dev/null @@ -1,2 +0,0 @@ -import QtQuick 2.0 -Rectangle {} diff --git a/tests/auto/qml/qqmllanguage/data/lib/com/nokia/installedtest0/qmldir b/tests/auto/qml/qqmllanguage/data/lib/com/nokia/installedtest0/qmldir index ce51ecae1a7d10a11667bb971d966d8dc4688a37..b30122609929191885f9caf748917ac6e6519eb8 100644 --- a/tests/auto/qml/qqmllanguage/data/lib/com/nokia/installedtest0/qmldir +++ b/tests/auto/qml/qqmllanguage/data/lib/com/nokia/installedtest0/qmldir @@ -1,3 +1,2 @@ InstalledTest 1.4 InstalledTest2.qml InstalledTestTP 0.0 InstalledTest.qml -Rectangle 1.5 InstalledTest3.qml diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp index f70b212231e63b1d79106a7b02fea41f4489c83d..47202693131693b9805958b4326f044a4abaae43 100644 --- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp +++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp @@ -1881,21 +1881,19 @@ void tst_qqmllanguage::importsOrder_data() << (!qmlCheckTypes()?"QQuickRectangle":"") << (!qmlCheckTypes()?"":"InstalledTest is ambiguous. Found in lib/com/nokia/installedtest/ in version 1.0 and 1.4") << false; - - // Note: imports are now reordered by increasing order of URI length QTest::newRow("installed import versus builtin 1") << - "import com.nokia.installedtest0 1.5\n" "import com.nokia.installedtest 1.5\n" + "import QtQuick 2.0\n" "Rectangle {}" << (!qmlCheckTypes()?"QQuickRectangle":"") - << (!qmlCheckTypes()?"":"Rectangle is ambiguous. Found in lib/com/nokia/installedtest0/ and in ") + << (!qmlCheckTypes()?"":"Rectangle is ambiguous. Found in file://") << true; QTest::newRow("installed import versus builtin 2") << "import QtQuick 2.0\n" "import com.nokia.installedtest 1.5\n" "Rectangle {}" << (!qmlCheckTypes()?"QQuickText":"") - << (!qmlCheckTypes()?"":"Rectangle is ambiguous. Found in lib/com/nokia/installedtest/ and in ") + << (!qmlCheckTypes()?"":"Rectangle is ambiguous. Found in lib/com/nokia/installedtest/ and in file://") << true; QTest::newRow("namespaces cannot be overridden by types 1") << "import QtQuick 2.0 as Rectangle\n" diff --git a/tests/auto/qml/qqmlmoduleplugin/data/importsNested.1.errors.txt b/tests/auto/qml/qqmlmoduleplugin/data/importsNested.1.errors.txt new file mode 100644 index 0000000000000000000000000000000000000000..262193788b1f2aced50b90911f2925fa8b813c55 --- /dev/null +++ b/tests/auto/qml/qqmlmoduleplugin/data/importsNested.1.errors.txt @@ -0,0 +1 @@ +1:1:module "com.nokia.AutoTestQmlNestedPluginType.Nested" is not installed diff --git a/tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp b/tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp index c110ce71d39e67920c04a0ff2796351833e16f86..f6c165840d7ae28445abc331e12e264d75c0ebc6 100644 --- a/tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp +++ b/tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp @@ -354,12 +354,12 @@ void tst_qqmlmoduleplugin::importsNested_data() QTest::addColumn<QString>("file"); QTest::addColumn<QString>("errorFile"); - // Note: specific order required to induce failure (no other test case should import the - // plugin used for this test, or the alternate order test will pass spuriously) - QTest::newRow("alternateOrder") << "importsNested.1.qml" << QString(); - QTest::newRow("expectedOrder") << "importsNested.2.qml" << QString(); + // Note: no other test case should import the plugin used for this test, or the + // wrong order test will pass spuriously + QTest::newRow("wrongOrder") << "importsNested.1.qml" << "importsNested.1.errors.txt"; QTest::newRow("missingImport") << "importsNested.3.qml" << "importsNested.3.errors.txt"; QTest::newRow("invalidVersion") << "importsNested.4.qml" << "importsNested.4.errors.txt"; + QTest::newRow("correctOrder") << "importsNested.2.qml" << QString(); } void tst_qqmlmoduleplugin::importsNested() {