diff --git a/src/Application.cpp b/src/Application.cpp index 57b31e55..818389fd 100644 --- a/src/Application.cpp +++ b/src/Application.cpp @@ -278,8 +278,12 @@ void Application::createWindow(Profile::Ptr profile , const QString& directory) Session* Application::createSession(Profile::Ptr profile, const QString& directory , ViewManager* view) { + if (!profile) + profile = SessionManager::instance()->defaultProfile(); + Session* session = SessionManager::instance()->createSession(profile); - if (!directory.isEmpty() && session->initialWorkingDirectory().isEmpty()) + + if (!directory.isEmpty() && profile->property(Profile::StartInCurrentSessionDir)) session->setInitialWorkingDirectory(directory); // create view before starting the session process so that the session doesn't suffer diff --git a/src/EditProfileDialog.cpp b/src/EditProfileDialog.cpp index a2712a15..fa977c25 100644 --- a/src/EditProfileDialog.cpp +++ b/src/EditProfileDialog.cpp @@ -211,6 +211,7 @@ void EditProfileDialog::setupGeneralPage(const Profile::Ptr info) _ui->initialDirEdit->setClearButtonShown(true); _ui->dirSelectButton->setIcon( KIcon("folder-open") ); _ui->iconSelectButton->setIcon( KIcon(info->icon()) ); + _ui->startInSameDirButton->setChecked(info->property(Profile::StartInCurrentSessionDir)); // window options _ui->showMenuBarButton->setChecked( info->property(Profile::ShowMenuBar) ); @@ -218,7 +219,8 @@ void EditProfileDialog::setupGeneralPage(const Profile::Ptr info) // signals and slots connect( _ui->dirSelectButton , SIGNAL(clicked()) , this , SLOT(selectInitialDir()) ); connect( _ui->iconSelectButton , SIGNAL(clicked()) , this , SLOT(selectIcon()) ); - + connect( _ui->startInSameDirButton , SIGNAL(toggled(bool)) , this , + SLOT(startInSameDir(bool))); connect( _ui->profileNameEdit , SIGNAL(textChanged(const QString&)) , this , SLOT(profileNameChanged(const QString&)) ); connect( _ui->initialDirEdit , SIGNAL(textChanged(const QString&)) , this , @@ -348,6 +350,10 @@ void EditProfileDialog::profileNameChanged(const QString& text) _tempProfile->setProperty(Profile::Name,text); updateCaption(_tempProfile->name()); } +void EditProfileDialog::startInSameDir(bool sameDir) +{ + _tempProfile->setProperty(Profile::StartInCurrentSessionDir,sameDir); +} void EditProfileDialog::initialDirChanged(const QString& dir) { _tempProfile->setProperty(Profile::Directory,dir); diff --git a/src/EditProfileDialog.h b/src/EditProfileDialog.h index 5af7f6a6..c80ef8d1 100644 --- a/src/EditProfileDialog.h +++ b/src/EditProfileDialog.h @@ -111,6 +111,7 @@ private slots: void profileNameChanged(const QString& text); void initialDirChanged(const QString& text); + void startInSameDir(bool); void commandChanged(const QString& text); void tabTitleFormatChanged(const QString& text); void remoteTabTitleFormatChanged(const QString& text); diff --git a/src/EditProfileDialog.ui b/src/EditProfileDialog.ui index cabea2be..a95f68c1 100644 --- a/src/EditProfileDialog.ui +++ b/src/EditProfileDialog.ui @@ -32,8 +32,8 @@ 0 0 - 437 - 472 + 429 + 461 @@ -110,7 +110,7 @@ - + Icon: @@ -120,7 +120,7 @@ - + @@ -154,7 +154,7 @@ - + Qt::Horizontal @@ -167,7 +167,7 @@ - + Environment: @@ -177,7 +177,7 @@ - + Edit the list of environment variables and associated values @@ -187,6 +187,13 @@ + + + + Start in same directory as current tab + + + @@ -238,8 +245,8 @@ 0 0 - 437 - 472 + 429 + 461 @@ -381,8 +388,8 @@ 0 0 - 437 - 472 + 429 + 461 @@ -599,8 +606,8 @@ 0 0 - 437 - 472 + 429 + 461 @@ -777,8 +784,8 @@ 0 0 - 437 - 472 + 429 + 461 @@ -867,8 +874,8 @@ 0 0 - 437 - 472 + 429 + 461 diff --git a/src/Profile.cpp b/src/Profile.cpp index f85595d1..abe8a1eb 100644 --- a/src/Profile.cpp +++ b/src/Profile.cpp @@ -78,6 +78,7 @@ const Profile::PropertyInfo Profile::DefaultPropertyNames[] = , { ShowMenuBar , "ShowMenuBar" , GENERAL_GROUP , QVariant::Bool } , { TabBarMode , "TabBarMode" , GENERAL_GROUP , QVariant::Int } , { TabBarPosition , "TabBarPosition" , GENERAL_GROUP , QVariant::Int } + , { StartInCurrentSessionDir , "StartInCurrentSessionDir" , GENERAL_GROUP , QVariant::Bool } // Appearance , { Font , "Font" , APPEARANCE_GROUP , QVariant::Font } @@ -147,7 +148,7 @@ FallbackProfile::FallbackProfile() setProperty(TabBarMode,AlwaysShowTabBar); setProperty(TabBarPosition,TabBarBottom); setProperty(ShowMenuBar,true); - + setProperty(StartInCurrentSessionDir,true); setProperty(KeyBindings,"default"); setProperty(ColorScheme,"Linux"); diff --git a/src/Profile.h b/src/Profile.h index 1e08ef42..1cd96896 100644 --- a/src/Profile.h +++ b/src/Profile.h @@ -186,7 +186,11 @@ public: DefaultEncoding, /** (bool) Whether fonts should be aliased or not */ - AntiAliasFonts + AntiAliasFonts, + + /** (bool) Whether new sessions should be started in the same directory as the + * currently active session. */ + StartInCurrentSessionDir }; /**