QGuiApplication: Remove .desktop suffix in setDesktopFileName
The desktop file name should not contain ".desktop" suffix, but some
applications still specify it anyway because of the ambiguity in the
documentation that was fixed in
0c5135a9df
.
This change makes setDesktopFileName remove ".desktop" suffix so
desktopFileName always returns a desktop file name with correct format
and its users don't need to chop ".desktop".
Pick-to: 6.5
Change-Id: If5abccaf3bf976449cada8891fff887870e45b5f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
parent
d68dbd8b7d
commit
fb86c5a470
@ -19,6 +19,7 @@
|
||||
|
||||
#include <QtCore/QAbstractEventDispatcher>
|
||||
#include <QtCore/QFileInfo>
|
||||
#include <QtCore/QStandardPaths>
|
||||
#include <QtCore/QVariant>
|
||||
#include <QtCore/private/qcoreapplication_p.h>
|
||||
#include <QtCore/private/qabstracteventdispatcher_p.h>
|
||||
@ -792,6 +793,15 @@ void QGuiApplication::setDesktopFileName(const QString &name)
|
||||
if (!QGuiApplicationPrivate::desktopFileName)
|
||||
QGuiApplicationPrivate::desktopFileName = new QString;
|
||||
*QGuiApplicationPrivate::desktopFileName = name;
|
||||
if (name.endsWith(QLatin1String(".desktop"))) { // ### Qt 7: remove
|
||||
const QString filePath = QStandardPaths::locate(QStandardPaths::ApplicationsLocation, name);
|
||||
if (!filePath.isEmpty()) {
|
||||
qWarning("QGuiApplication::setDesktopFileName: the specified desktop file name "
|
||||
"ends with .desktop. For compatibility reasons, the .desktop suffix will "
|
||||
"be removed. Please specify a desktop file name without .desktop suffix");
|
||||
(*QGuiApplicationPrivate::desktopFileName).chop(8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString QGuiApplication::desktopFileName()
|
||||
|
@ -122,8 +122,8 @@ void tst_QGuiApplication::desktopFileName()
|
||||
|
||||
QCOMPARE(QGuiApplication::desktopFileName(), QString());
|
||||
|
||||
QGuiApplication::setDesktopFileName("io.qt.QGuiApplication.desktop");
|
||||
QCOMPARE(QGuiApplication::desktopFileName(), QString::fromLatin1("io.qt.QGuiApplication.desktop"));
|
||||
QGuiApplication::setDesktopFileName("io.qt.QGuiApplication");
|
||||
QCOMPARE(QGuiApplication::desktopFileName(), QString::fromLatin1("io.qt.QGuiApplication"));
|
||||
|
||||
QGuiApplication::setDesktopFileName(QString());
|
||||
QCOMPARE(QGuiApplication::desktopFileName(), QString());
|
||||
|
Loading…
Reference in New Issue
Block a user