diff --git a/src/ViewManager.cpp b/src/ViewManager.cpp --- a/src/ViewManager.cpp +++ b/src/ViewManager.cpp @@ -971,54 +971,25 @@ int ViewManager::newSession() { - Profile::Ptr profile = ProfileManager::instance()->defaultProfile(); - Session *session = SessionManager::instance()->createSession(profile); - - session->addEnvironmentEntry(QStringLiteral("KONSOLE_DBUS_WINDOW=/Windows/%1").arg(managerId())); - - createView(session); - session->run(); - - return session->sessionId(); + return newSession(QString()); } int ViewManager::newSession(const QString &profile) { - const QList profilelist = ProfileManager::instance()->allProfiles(); - Profile::Ptr profileptr = ProfileManager::instance()->defaultProfile(); - - for (const auto &i : profilelist) { - if (i->name() == profile) { - profileptr = i; - break; - } - } - - Session *session = SessionManager::instance()->createSession(profileptr); - - session->addEnvironmentEntry(QStringLiteral("KONSOLE_DBUS_WINDOW=/Windows/%1").arg(managerId())); - - createView(session); - session->run(); - - return session->sessionId(); + return newSession(profile, QString()); } int ViewManager::newSession(const QString &profile, const QString &directory) { const QList profilelist = ProfileManager::instance()->allProfiles(); - Profile::Ptr profileptr = ProfileManager::instance()->defaultProfile(); - - for (const auto &i : profilelist) { - if (i->name() == profile) { - profileptr = i; - break; - } - } + Profile::Ptr profileptr = profile.isEmpty() + ? ProfileManager::instance()->defaultProfile() + : ProfileManager::instance()->loadProfile(profile); Session *session = SessionManager::instance()->createSession(profileptr); - session->setInitialWorkingDirectory(directory); - + if (!directory.isEmpty()) { + session->setInitialWorkingDirectory(directory); + } session->addEnvironmentEntry(QStringLiteral("KONSOLE_DBUS_WINDOW=/Windows/%1").arg(managerId())); createView(session);