X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/0bc919bd4758a84ccc0928ff784223984ec5df88..e076d8668f673e09ddd01b3367e413a494d6d2bb:/src/main.cpp diff --git a/src/main.cpp b/src/main.cpp index 639dc32ef..802e64d25 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -59,8 +60,13 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv) } #endif + /** + * enable high dpi support + */ + QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true); + QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true); + QApplication app(argc, argv); - app.setAttribute(Qt::AA_UseHighDpiPixmaps, true); app.setWindowIcon(QIcon::fromTheme(QStringLiteral("system-file-manager"), app.windowIcon())); KCrash::initialize(); @@ -76,7 +82,7 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv) i18nc("@title", "File Manager"), KAboutLicense::GPL, i18nc("@info:credit", "(C) 2006-2018 Peter Penz, Frank Reininghaus, Emmanuel Pescosta and Elvis Angelaccio")); - aboutData.setHomepage(QStringLiteral("https://dolphin.kde.org")); + aboutData.setHomepage(QStringLiteral("https://kde.org/applications/system/org.kde.dolphin")); aboutData.addAuthor(i18nc("@info:credit", "Elvis Angelaccio"), i18nc("@info:credit", "Maintainer (since 2018) and developer"), QStringLiteral("elvis.angelaccio@kde.org")); @@ -116,9 +122,6 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv) KAboutData::setApplicationData(aboutData); - KDBusService dolphinDBusService; - DBusInterface interface; - QCommandLineParser parser; aboutData.setupCommandLine(&parser); @@ -137,12 +140,25 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv) const bool openFiles = parser.isSet(QStringLiteral("select")); const QStringList args = parser.positionalArguments(); QList urls = Dolphin::validateUris(args); + // We later mutate urls, so we need to store if it was empty originally + const bool startedWithURLs = !urls.isEmpty(); + if (parser.isSet(QStringLiteral("daemon"))) { + KDBusService dolphinDBusService; + DBusInterface interface; + interface.setAsDaemon(); return app.exec(); } - if (urls.isEmpty()) { + if (!parser.isSet(QStringLiteral("new-window"))) { + if (Dolphin::attachToExistingInstance(urls, openFiles, splitView)) { + // Successfully attached to existing instance of Dolphin + return 0; + } + } + + if (!startedWithURLs) { // We need at least one URL to open Dolphin urls.append(Dolphin::homeUrl()); } @@ -152,13 +168,6 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv) urls.append(urls.last()); } - if (!parser.isSet(QStringLiteral("new-window"))) { - if (Dolphin::attachToExistingInstance(urls, openFiles, splitView)) { - // Successfully attached to existing instance of Dolphin - return 0; - } - } - DolphinMainWindow* mainWindow = new DolphinMainWindow(); if (openFiles) { @@ -169,14 +178,30 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv) mainWindow->show(); - if (app.isSessionRestored()) { - const QString className = KXmlGuiWindow::classNameOfToplevel(1); - if (className == QLatin1String("DolphinMainWindow")) { - mainWindow->restore(1); - } else { - qCWarning(DolphinDebug) << "Unknown class " << className << " in session saved data!"; + if (!app.isSessionRestored()) { + KConfigGui::setSessionConfig(QStringLiteral("dolphin"), QStringLiteral("dolphin")); + } + + // Only restore session if: + // 1. Dolphin was not started with command line args + // 2. The "remember state" setting is enabled or session restoration after + // reboot is in use + // 3. There is a session available to restore + if (!startedWithURLs && (app.isSessionRestored() || GeneralSettings::rememberOpenedTabs()) ) { + // Get saved state data for the last-closed Dolphin instance + const QString serviceName = QStringLiteral("org.kde.dolphin-%1").arg(QCoreApplication::applicationPid()); + if (Dolphin::dolphinGuiInstances(serviceName).size() > 0) { + const QString className = KXmlGuiWindow::classNameOfToplevel(1); + if (className == QLatin1String("DolphinMainWindow")) { + mainWindow->restore(1); + } else { + qCWarning(DolphinDebug) << "Unknown class " << className << " in session saved data!"; + } } } + KDBusService dolphinDBusService; + DBusInterface interface; + return app.exec(); // krazy:exclude=crash; }