diff options
Diffstat (limited to 'src/declarative/qml')
-rw-r--r-- | src/declarative/qml/qdeclarativeengine.cpp | 11 | ||||
-rw-r--r-- | src/declarative/qml/qdeclarativeengine_p.h | 1 | ||||
-rw-r--r-- | src/declarative/qml/qdeclarativemetatype.cpp | 20 | ||||
-rw-r--r-- | src/declarative/qml/qdeclarativevaluetype.cpp | 10 | ||||
-rw-r--r-- | src/declarative/qml/qdeclarativevaluetype_p.h | 1 |
5 files changed, 37 insertions, 6 deletions
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index bbf2b6be..b38a4991 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -188,13 +188,16 @@ void QDeclarativeEnginePrivate::defineModule() qmlRegisterType<QObject>("QtQuick",1,0,"QtObject"); qmlRegisterType<QDeclarativeWorkerScript>("QtQuick",1,0,"WorkerScript"); + qmlRegisterType<QDeclarativeBinding>(); +} + +void QDeclarativeEnginePrivate::defineModuleCompat() +{ #ifndef QT_NO_IMPORT_QT47_QML qmlRegisterType<QDeclarativeComponent>("Qt",4,7,"Component"); qmlRegisterType<QObject>("Qt",4,7,"QtObject"); qmlRegisterType<QDeclarativeWorkerScript>("Qt",4,7,"WorkerScript"); #endif - - qmlRegisterType<QDeclarativeBinding>(); } /*! @@ -356,10 +359,10 @@ QDeclarativeEnginePrivate::QDeclarativeEnginePrivate(QDeclarativeEngine *e) { if (!qt_QmlQtModule_registered) { qt_QmlQtModule_registered = true; - QDeclarativeItemModule::defineModule(); - QDeclarativeUtilModule::defineModule(); QDeclarativeEnginePrivate::defineModule(); + QDeclarativeItemModule::defineModule(); QDeclarativeValueTypeFactory::registerValueTypes(); + QDeclarativeUtilModule::defineModule(); } globalClass = new QDeclarativeGlobalScriptClass(&scriptEngine); } diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h index c4b55156..d5659878 100644 --- a/src/declarative/qml/qdeclarativeengine_p.h +++ b/src/declarative/qml/qdeclarativeengine_p.h @@ -324,6 +324,7 @@ public: static QString urlToLocalFileOrQrc(const QUrl& url); static void defineModule(); + static void defineModuleCompat(); static bool qml_debugging_enabled; }; diff --git a/src/declarative/qml/qdeclarativemetatype.cpp b/src/declarative/qml/qdeclarativemetatype.cpp index 7786bea4..a045623d 100644 --- a/src/declarative/qml/qdeclarativemetatype.cpp +++ b/src/declarative/qml/qdeclarativemetatype.cpp @@ -45,6 +45,9 @@ #include "private/qdeclarativeproxymetaobject_p.h" #include "private/qdeclarativecustomparser_p.h" #include "private/qdeclarativeguard_p.h" +#include "private/qdeclarativeengine_p.h" +#include "private/qdeclarativeitemsmodule_p.h" +#include "private/qdeclarativeutilmodule_p.h" #include <QtCore/qdebug.h> #include <QtCore/qstringlist.h> @@ -690,6 +693,23 @@ int QDeclarativePrivate::qmlregister(RegistrationType type, void *data) */ bool QDeclarativeMetaType::isModule(const QByteArray &module, int versionMajor, int versionMinor) { +#ifndef QT_NO_IMPORT_QT47_QML + // "import Qt 4.7" should have died off, but unfortunately, it was in a + // major release. We don't register 4.7 types by default, as it's a + // performance penalty. Instead, register them on-demand. + if (strcmp(module.constData(), "Qt") == 0 && versionMajor == 4 && versionMinor == 7) { + static bool qt47Registered = false; + if (!qt47Registered) { + qWarning() << Q_FUNC_INFO << "Qt 4.7 import detected; please note that Qt 4.7 is directly reusable as QtQuick 1.x with no code changes. Continuing, but startup time will be slower."; + qt47Registered = true; + QDeclarativeEnginePrivate::defineModuleCompat(); + QDeclarativeItemModule::defineModuleCompat(); + QDeclarativeValueTypeFactory::registerValueTypesCompat(); + QDeclarativeUtilModule::defineModuleCompat(); + } + } +#endif + QDeclarativeMetaTypeData *data = metaTypeData(); QDeclarativeMetaTypeData::ModuleInfoHash::Iterator it = data->modules.find(module); return it != data->modules.end() diff --git a/src/declarative/qml/qdeclarativevaluetype.cpp b/src/declarative/qml/qdeclarativevaluetype.cpp index c18ea9d8..6a0eac98 100644 --- a/src/declarative/qml/qdeclarativevaluetype.cpp +++ b/src/declarative/qml/qdeclarativevaluetype.cpp @@ -44,6 +44,7 @@ #include "private/qdeclarativemetatype_p.h" #include "private/qfont_p.h" +#include <QtWidgets/qapplication.h> #include <QtCore/qdebug.h> QT_BEGIN_NAMESPACE @@ -106,10 +107,15 @@ void QDeclarativeValueTypeFactory::registerValueTypes() { qmlRegisterValueTypeEnums<QDeclarativeEasingValueType>("QtQuick",1,0,"Easing"); qmlRegisterValueTypeEnums<QDeclarativeFontValueType>("QtQuick",1,0,"Font"); -#ifndef QT_NO_IMPORT_QT47_QML +} + +void QDeclarativeValueTypeFactory::registerValueTypesCompat() +{ + if (QApplication::type() == QApplication::Tty) + return; + qmlRegisterValueTypeEnums<QDeclarativeEasingValueType>("Qt",4,7,"Easing"); qmlRegisterValueTypeEnums<QDeclarativeFontValueType>("Qt",4,7,"Font"); -#endif } QDeclarativeValueType *QDeclarativeValueTypeFactory::valueType(int t) diff --git a/src/declarative/qml/qdeclarativevaluetype_p.h b/src/declarative/qml/qdeclarativevaluetype_p.h index 66afdf95..3fac009b 100644 --- a/src/declarative/qml/qdeclarativevaluetype_p.h +++ b/src/declarative/qml/qdeclarativevaluetype_p.h @@ -90,6 +90,7 @@ public: static QDeclarativeValueType *valueType(int); static void registerValueTypes(); + static void registerValueTypesCompat(); QDeclarativeValueType *operator[](int idx) const { if (idx >= (int)QVariant::UserType) return 0; |