diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -770,6 +770,7 @@ removeMenuAccelerators(); } + _viewManager->setNavigationBehavior(KonsoleSettings::newTabBehavior()); setAutoSaveSettings(QStringLiteral("MainWindow"), KonsoleSettings::saveGeometryOnExit()); updateWindowCaption(); } diff --git a/src/ViewManager.h b/src/ViewManager.h --- a/src/ViewManager.h +++ b/src/ViewManager.h @@ -179,6 +179,7 @@ void saveSessions(KConfigGroup &group); void restoreSessions(const KConfigGroup &group); + void setNavigationBehavior(int behavior); int managerId() const; /** Returns a list of sessions in this ViewManager */ @@ -412,6 +413,7 @@ NavigationMethod _navigationMethod; NavigationVisibility _navigationVisibility; + NewTabBehavior _newTabBehavior; QString _navigationStyleSheet; int _managerId; static int lastManagerId; diff --git a/src/ViewManager.cpp b/src/ViewManager.cpp --- a/src/ViewManager.cpp +++ b/src/ViewManager.cpp @@ -57,6 +57,7 @@ _sessionMap(QHash()), _actionCollection(collection), _navigationVisibility(NavigationNotSet), + _newTabBehavior(PutNewTabAtTheEnd), _managerId(0) { // create main view area @@ -605,6 +606,10 @@ // new tab will be put at the end by default. int index = -1; + if (_newTabBehavior == PutNewTabAfterCurrentTab) { + index = _viewSplitter->activeContainer()->currentIndex() + 1; + } + // iterate over the view containers owned by this view manager // and create a new terminal display for the session in each of them, along with // a controller for the session/display pair @@ -1122,3 +1127,8 @@ } } } + +void ViewManager::setNavigationBehavior(int behavior) +{ + _newTabBehavior = static_cast(behavior); +}