summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorDavid Faure <faure@kde.org>2012-03-20 18:01:20 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-28 00:51:32 +0200
commite5d549552614f89dd73b29fc3ee4710f65bb1e57 (patch)
tree0f1480eb7c25a7dc48e5248463daf02d4f36f6c5 /src/gui
parentdf43b9a06a73759ba74f23d9c3e91bd0347d1026 (diff)
Make QCoreApplication::applicationName() default to argv[0]
This makes it more useful in all the Qt apps that don't set it, given that it's used internally by QTemporaryFile, QTemporaryDir, QStandardPaths, QDBus, QAccessibleApplication, etc. Qt4 compatibility in the deprecated QDesktopServices is preserved, no fallback there. Change-Id: I584463507cf917a3720793c6bd45d07c60f8356c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/util/qdesktopservices.cpp27
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));
}