diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp index 4119012d85..97ff7b1a51 100644 --- a/src/corelib/global/qlibraryinfo.cpp +++ b/src/corelib/global/qlibraryinfo.cpp @@ -171,6 +171,26 @@ void QLibrarySettings::load() } } +static QSettings *__qli_findXDGConfig() +{ + // https://bugreports.qt.io/browse/QTBUG-14150 + if (qgetenv("SNAP").isEmpty()) + return 0; + const QString configHome = qEnvironmentVariable("XDG_CONFIG_HOME"); + const QString configDirs = qEnvironmentVariable("XDG_CONFIG_DIRS"); + const QString pathVars[] = { configHome, configDirs }; + for (const QString &paths : pathVars) { + for (const QString &path : paths.split(QChar(':'))) { + if (path.isEmpty()) + continue; + const QString qtconfig = path + QStringLiteral("/qt.conf"); + if (QFile::exists(qtconfig)) + return new QSettings(qtconfig, QSettings::IniFormat); + } + } + return 0; +} + QSettings *QLibraryInfoPrivate::findConfiguration() { #ifdef QT_BUILD_QMAKE @@ -203,7 +223,7 @@ QSettings *QLibraryInfoPrivate::findConfiguration() return new QSettings(qtconfig, QSettings::IniFormat); } #endif - return 0; //no luck + return __qli_findXDGConfig(); //no luck } #endif // settings