diff options
Diffstat (limited to 'src/qml/qml/qqmlimport.cpp')
-rw-r--r-- | src/qml/qml/qqmlimport.cpp | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/src/qml/qml/qqmlimport.cpp b/src/qml/qml/qqmlimport.cpp index a6a230090e..b1d304924d 100644 --- a/src/qml/qml/qqmlimport.cpp +++ b/src/qml/qml/qqmlimport.cpp @@ -1893,12 +1893,28 @@ QQmlImportDatabase::QQmlImportDatabase(QQmlEngine *e) // env import paths if (Q_UNLIKELY(!qEnvironmentVariableIsEmpty("QML2_IMPORT_PATH"))) { const QString envImportPath = qEnvironmentVariable("QML2_IMPORT_PATH"); -#if defined(Q_OS_WIN) - QLatin1Char pathSep(';'); -#else - QLatin1Char pathSep(':'); -#endif - QStringList paths = envImportPath.split(pathSep, Qt::SkipEmptyParts); + const QChar pathSep = QDir::listSeparator(); + QStringList paths; + if (pathSep == u':') { + // Double colons are interpreted as separator + resource path. + paths = envImportPath.split(u':'); + bool wasEmpty = false; + for (auto it = paths.begin(); it != paths.end();) { + if (it->isEmpty()) { + wasEmpty = true; + it = paths.erase(it); + } else { + if (wasEmpty) { + it->prepend(u':'); + wasEmpty = false; + } + ++it; + } + } + } else { + paths = envImportPath.split(pathSep, Qt::SkipEmptyParts); + } + for (int ii = paths.count() - 1; ii >= 0; --ii) addImportPath(paths.at(ii)); } |