When restoring former window state, append any URLs passed as args

Before, when Dolphin was closed but opened with any URLs, it would open
a new window with only those URLs, rather than restoring any window
state (if the user has this feature enabled).

Now, Dolphin will first restore state (if enabled) and then append any
URLs, rather than replacing the existing set of URLs.

The "new instance" case was previously handled automatically and now
needs to be explictly handled by checking for it, to make sure that new
instances give you a clean window rather than a state-restored window.

BUG: 427274
FIXED-IN: 20.12
This commit is contained in:
Nate Graham 2020-10-06 12:16:25 -06:00
parent 95e34931c0
commit 4937992e93

View file

@ -173,17 +173,24 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv)
}
// Only restore session if:
// 1. Dolphin was not started with command line args
// 1. Not explicitly opening a new instance
// 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()) ) {
if (!parser.isSet(QStringLiteral("new-window"))
&& (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);
// If the user passed any URLs to Dolphin, open those in the
// window after session-restoring it
if (startedWithURLs) {
mainWindow->openDirectories(urls, splitView);
}
} else {
qCWarning(DolphinDebug) << "Unknown class " << className << " in session saved data!";
}