X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/c733b3aa9787a618a0ce5bb03b3fc731f5663b21..82b542cb2b9eb61b30e2a9a613081b7ab286e9ad:/src/main.cpp diff --git a/src/main.cpp b/src/main.cpp index 9191127e5..779690c1c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -12,6 +12,10 @@ #include "dolphindebug.h" #include "dolphinmainwindow.h" #include "global.h" +#include "config-kuserfeedback.h" +#ifdef HAVE_KUSERFEEDBACK +#include "userfeedback/dolphinfeedbackprovider.h" +#endif #include #include @@ -19,6 +23,7 @@ #include #include #include +#include #include #include @@ -26,13 +31,14 @@ #include #include #include +#include #ifndef Q_OS_WIN #include #endif #include -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()) { @@ -189,17 +210,22 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv) // If the user passed any URLs to Dolphin, open those in the // window after session-restoring it if (startedWithURLs) { - mainWindow->openDirectories(urls, splitView); + if (openFiles) { + mainWindow->openFiles(urls, splitView); + } else { + mainWindow->openDirectories(urls, splitView); + } } - - // Now handle invalid locations in the set of active views to - // avoid issues like https://bugs.kde.org/show_bug.cgi?id=427619 - mainWindow->setViewsWithInvalidPathsToHome(); } else { qCWarning(DolphinDebug) << "Unknown class " << className << " in session saved data!"; } } } +#ifdef HAVE_KUSERFEEDBACK + auto feedbackProvider = DolphinFeedbackProvider::instance(); + Q_UNUSED(feedbackProvider) +#endif + return app.exec(); // krazy:exclude=crash; }