diff --git a/src/plugins/coreplugin/session.cpp b/src/plugins/coreplugin/session.cpp index a174ddeec52..c995c80ec28 100644 --- a/src/plugins/coreplugin/session.cpp +++ b/src/plugins/coreplugin/session.cpp @@ -409,6 +409,12 @@ static QString determineSessionToRestoreAtStartup() return {}; } +bool SessionManager::loadsSessionOrFileAtStartup() +{ + // "left-over arguments" usually mean a session or files + return !PluginManager::arguments().isEmpty() || !determineSessionToRestoreAtStartup().isEmpty(); +} + void SessionManagerPrivate::restoreStartupSession() { NANOTRACE_SCOPE("Core", "SessionManagerPrivate::restoreStartupSession"); diff --git a/src/plugins/coreplugin/session.h b/src/plugins/coreplugin/session.h index 6c0bef6d954..71769125d76 100644 --- a/src/plugins/coreplugin/session.h +++ b/src/plugins/coreplugin/session.h @@ -28,6 +28,8 @@ public: static SessionManager *instance(); + static bool loadsSessionOrFileAtStartup(); + // higher level session management static QString activeSession(); static QString lastSession(); diff --git a/src/plugins/welcome/welcomeplugin.cpp b/src/plugins/welcome/welcomeplugin.cpp index f8f80d1e0a4..59dcf453435 100644 --- a/src/plugins/welcome/welcomeplugin.cpp +++ b/src/plugins/welcome/welcomeplugin.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -360,7 +361,8 @@ public: void extensionsInitialized() { m_modeWidget->initPlugins(); - ModeManager::activateMode(id()); + if (!SessionManager::loadsSessionOrFileAtStartup()) + ModeManager::activateMode(id()); } private: