]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Install servicemenus in new install location
authorAlexander Lohnau <alexander.lohnau@gmx.de>
Tue, 15 Mar 2022 19:01:55 +0000 (20:01 +0100)
committerAlexander Lohnau <alexander.lohnau@gmx.de>
Fri, 1 Apr 2022 17:55:11 +0000 (17:55 +0000)
Since KIO 5.85, this new file location is preferred over the
KServiceTypeTrader results.

With this change, single desktop files from the KDE store are installed
in the correct location. If however a custom install script is used,
developers need to adjust their scripts.

Because the "kio/servicemenus" locations is different than the one
KAuthorized allows by default, we have to mark the file as executable.

Task: https://phabricator.kde.org/T14543

src/settings/contextmenu/servicemenuinstaller/servicemenuinstaller.cpp

index 91da3d256ea367c407a9084d891b3c783079b6fe..7f42ee3bd5927e3ec109ffac44d259491eea3401 100644 (file)
@@ -50,7 +50,7 @@ Q_NORETURN void fail(const QString &str)
 QString getServiceMenusDir()
 {
     const QString dataLocation = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
-    return QDir(dataLocation).absoluteFilePath("kservices5/ServiceMenus");
+    return QDir(dataLocation).absoluteFilePath("kio/servicemenus");
 }
 
 #ifdef HAVE_PACKAGEKIT
@@ -300,6 +300,8 @@ bool cmdInstall(const QString &archive, QString &errorText)
             errorText = i18n("Failed to copy .desktop file %1 to %2: %3", archive, dest, source.errorString());
             return false;
         }
+        QFile destFile(dest);
+        destFile.setPermissions(destFile.permissions() | QFile::ExeOwner);
     } else {
         if (binaryPackages->contains(QMimeDatabase().mimeTypeForFile(archive).name())) {
             packageKit(PackageOperation::Install, archive);