Commit f61f9d8c authored by Eike Hein's avatar Eike Hein

Set the correct desktop file name when in a KDE session.

Summary:
System Settings installs two .desktop files:
- kdesystemsettings.desktop setting NotShowIn=KDE, for non-KDE desktops
- systemsettings.desktop, the one we use in Plasma

As of 39e13de3, it sets "kdesystemsettings" as its desktop file
name using KAboutData. As this is not the one we show in our menus,
it's not the one used as applicationId for the KStartupInfo provided
to the Task Manager after starting System Settings. With the eventual
window telling the Task Manager to use a different .desktop file, the
Task Manager can no longer match up the startup notification and the
window, causing them to co-exist instead of replace each other.

Telling the environment you're running in to look at a .desktop file
you've also told it to ignore is wrong app behavior, and this should
not be worked around in the Task Manager (especially as it would
cause I/O in a hotpath, requiring it to open and parse the .desktop
file to realize it's crummy and ignore it, falling back from the
window hint to a slow heuristic).

This patch instead makes it use the correct desktop file name when
KDE_FULL_SESSION is set. This completes the original hack of shipping
two .desktop files.

Reviewers: #plasma, graesslin, mart, bshah

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D5006
parent e12efe89
......@@ -38,7 +38,13 @@ int main( int argc, char *argv[] )
aboutData.addAuthor(i18n("Ben Cooksley"), i18n("Maintainer"), "bcooksley@kde.org");
aboutData.addAuthor(i18n("Mathias Soeken"), i18n("Developer"), "msoeken@informatik.uni-bremen.de");
aboutData.addAuthor(i18n("Will Stephenson"), i18n("Internal module representation, internal module model"), "wstephenson@kde.org");
aboutData.setDesktopFileName(QStringLiteral("kdesystemsettings"));
if (qEnvironmentVariableIsSet("KDE_FULL_SESSION")) {
aboutData.setDesktopFileName(QStringLiteral("systemsettings"));
} else {
aboutData.setDesktopFileName(QStringLiteral("kdesystemsettings"));
}
KAboutData::setApplicationData(aboutData);
application.setAttribute(Qt::AA_UseHighDpiPixmaps, true);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment