summary refs log tree commit diff
path: root/pkgs/development/libraries/qt-5/5.4/qtbase/xdg-config-dirs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/qt-5/5.4/qtbase/xdg-config-dirs.patch')
-rw-r--r--pkgs/development/libraries/qt-5/5.4/qtbase/xdg-config-dirs.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/pkgs/development/libraries/qt-5/5.4/qtbase/xdg-config-dirs.patch b/pkgs/development/libraries/qt-5/5.4/qtbase/xdg-config-dirs.patch
new file mode 100644
index 00000000000..dbf5eac52e6
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.4/qtbase/xdg-config-dirs.patch
@@ -0,0 +1,42 @@
+Index: qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/io/qsettings.cpp
+===================================================================
+--- qt-everywhere-opensource-src-5.4.2.orig/qtbase/src/corelib/io/qsettings.cpp
++++ qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/io/qsettings.cpp
+@@ -1128,6 +1128,24 @@ QConfFileSettingsPrivate::QConfFileSetti
+     if (!application.isEmpty())
+         confFiles[F_System | F_Application].reset(QConfFile::fromName(systemPath + appFile, false));
+     confFiles[F_System | F_Organization].reset(QConfFile::fromName(systemPath + orgFile, false));
++
++#if !defined(Q_OS_WIN)
++    // Add directories specified in $XDG_CONFIG_DIRS
++    const QString pathEnv = QString::fromLocal8Bit(getenv("XDG_CONFIG_DIRS"));
++    if (!pathEnv.isEmpty()) {
++        const QStringList pathEntries = pathEnv.split(QLatin1Char(':'), QString::SkipEmptyParts);
++        if (!pathEntries.isEmpty()) {
++            int j = 4; // This is the number of confFiles set above -- we need to start adding $XDG_CONFIG_DIRS after those.
++            for (int k = 0; k < pathEntries.size() && j < NumConfFiles - 1; ++k) {
++                const QString& path = pathEntries.at(k);
++                if (!application.isEmpty())
++                    confFiles[j++].reset(QConfFile::fromName(path + QDir::separator() + appFile, false));
++                confFiles[j++].reset(QConfFile::fromName(path + QDir::separator() + orgFile, false));
++            }
++        }
++    }
++#endif
++
+ #else
+     QString confName = getPath(format, QSettings::UserScope) + org;
+     if (!application.isEmpty())
+Index: qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/io/qsettings_p.h
+===================================================================
+--- qt-everywhere-opensource-src-5.4.2.orig/qtbase/src/corelib/io/qsettings_p.h
++++ qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/io/qsettings_p.h
+@@ -240,7 +240,7 @@ public:
+         F_Organization = 0x1,
+         F_User = 0x0,
+         F_System = 0x2,
+-        NumConfFiles = 4
++        NumConfFiles = 40 // HACK: increase NumConfFiles from 4 to 40 in order to accommodate more paths in $XDG_CONFIG_DIRS -- ellis
+ #else
+         SandboxConfFile = 0,
+         NumConfFiles = 1