diff options
author | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2012-04-10 12:48:01 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2012-04-10 15:31:45 +0200 |
commit | 143c4d3e13a430b951f4f4f8c28db14303f80605 (patch) | |
tree | 2b89637b93fc7d81c674106008566010f986d67c /src/gui/util | |
parent | a7ed81b557d593a8ddb43b71bf4bbf3b44ead070 (diff) | |
parent | e5337ad1b1fb02873ce7b5ca8db45f6fd8063352 (diff) |
Merge remote-tracking branch 'origin/master' into api_changes
Conflicts:
configure
src/widgets/styles/qwindowsxpstyle.cpp
tests/auto/gui/kernel/qwindow/qwindow.pro
tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
Change-Id: I624b6d26abce9874c610c04954c1c45bc074bef3
Diffstat (limited to 'src/gui/util')
-rw-r--r-- | src/gui/util/qdesktopservices.cpp | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/gui/util/qdesktopservices.cpp b/src/gui/util/qdesktopservices.cpp index 1a6661440c..26aecadcf4 100644 --- a/src/gui/util/qdesktopservices.cpp +++ b/src/gui/util/qdesktopservices.cpp @@ -287,17 +287,26 @@ void QDesktopServices::unsetUrlHandler(const QString &scheme) QString QDesktopServices::storageLocationImpl(StandardLocation type) { -#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC) if (type == DataLocation) { - QString xdgDataHome = QLatin1String(qgetenv("XDG_DATA_HOME")); - if (xdgDataHome.isEmpty()) - xdgDataHome = QDir::homePath() + QLatin1String("/.local/share"); - xdgDataHome += QLatin1String("/data/") - + QCoreApplication::organizationName() + QLatin1Char('/') - + QCoreApplication::applicationName(); - return xdgDataHome; - } + // Preserve Qt 4 compatibility: + // * QCoreApplication::applicationName() must default to empty + // * Unix data location is under the "data/" subdirectory + extern Q_CORE_EXPORT QString qt_applicationName_noFallback(); + const QString compatAppName = qt_applicationName_noFallback(); + const QString baseDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation); +#if defined(Q_OS_WIN) || defined(Q_OS_MAC) + QString result = baseDir; + if (!QCoreApplication::organizationName().isEmpty()) + result += QLatin1Char('/') + QCoreApplication::organizationName(); + if (!compatAppName.isEmpty()) + result += QLatin1Char('/') + compatAppName; + return result; +#elif defined(Q_OS_UNIX) + return baseDir + QLatin1String("/data/") + + QCoreApplication::organizationName() + QLatin1Char('/') + + compatAppName; #endif + } return QStandardPaths::writableLocation(static_cast<QStandardPaths::StandardLocation>(type)); } |