]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/main.cpp
Merge remote-tracking branch 'origin/release/21.08'
[dolphin.git] / src / main.cpp
index 9191127e527e8f20e8862b62b305b473952c62d7..ba894ec38c2944633fe3b78243c02bb000249566 100644 (file)
 #include "dolphindebug.h"
 #include "dolphinmainwindow.h"
 #include "global.h"
+#include "config-kuserfeedback.h"
+#ifdef HAVE_KUSERFEEDBACK
+#include "userfeedback/dolphinfeedbackprovider.h"
+#endif
 
 #include <KAboutData>
 #include <KCrash>
@@ -19,6 +23,7 @@
 #include <KLocalizedString>
 #include <Kdelibs4ConfigMigrator>
 #include <KConfigGui>
+#include <KIO/PreviewJob>
 
 #include <QApplication>
 #include <QCommandLineParser>
 #include <QDBusInterface>
 #include <QDBusAbstractInterface>
 #include <QDBusConnectionInterface>
+#include <QSessionManager>
 
 #ifndef Q_OS_WIN
 #include <unistd.h>
 #endif
 #include <iostream>
 
-extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv)
+int main(int argc, char **argv)
 {
 #ifndef Q_OS_WIN
     // Prohibit using sudo or kdesu (but allow using the root user directly)
@@ -56,6 +62,8 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv)
     QApplication app(argc, argv);
     app.setWindowIcon(QIcon::fromTheme(QStringLiteral("system-file-manager"), app.windowIcon()));
 
+    KIO::PreviewJob::setDefaultDevicePixelRatio(app.devicePixelRatio());
+
     KCrash::initialize();
 
     Kdelibs4ConfigMigrator migrate(QStringLiteral("dolphin"));
@@ -132,6 +140,14 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv)
 
 
     if (parser.isSet(QStringLiteral("daemon"))) {
+        // Disable session management for the daemonized version
+        // See https://bugs.kde.org/show_bug.cgi?id=417219
+        auto disableSessionManagement = [](QSessionManager &sm) {
+            sm.setRestartHint(QSessionManager::RestartNever);
+        };
+        QObject::connect(&app, &QGuiApplication::commitDataRequest, disableSessionManagement);
+        QObject::connect(&app, &QGuiApplication::saveStateRequest, disableSessionManagement);
+
         KDBusService dolphinDBusService;
         DBusInterface interface;
         interface.setAsDaemon();
@@ -165,7 +181,12 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv)
 
     mainWindow->show();
 
-    KDBusService dolphinDBusService;
+    // Allow starting Dolphin on a system that is not running DBus:
+    KDBusService::StartupOptions serviceOptions = KDBusService::Multiple;
+    if (!QDBusConnection::sessionBus().isConnected()) {
+        serviceOptions |= KDBusService::NoExitOnFailure;
+    }
+    KDBusService dolphinDBusService(serviceOptions);
     DBusInterface interface;
 
     if (!app.isSessionRestored()) {
@@ -201,5 +222,10 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv)
         }
     }
 
+#ifdef HAVE_KUSERFEEDBACK
+    auto feedbackProvider = DolphinFeedbackProvider::instance();
+    Q_UNUSED(feedbackProvider)
+#endif
+
     return app.exec(); // krazy:exclude=crash;
 }