diff --git a/src/RenameTabsDialog.cpp b/src/RenameTabsDialog.cpp index 2ecd417dd..c70cc8a55 100644 --- a/src/RenameTabsDialog.cpp +++ b/src/RenameTabsDialog.cpp @@ -56,6 +56,15 @@ RenameTabsDialog::~RenameTabsDialog() delete _ui; } +void RenameTabsDialog::focusTabTitleText() +{ + _ui->tabTitleEdit->setFocus(); +} + +void RenameTabsDialog::focusRemoteTabTitleText() +{ + _ui->remoteTabTitleEdit->setFocus(); +} void RenameTabsDialog::setTabTitleText(const QString& text) { diff --git a/src/RenameTabsDialog.h b/src/RenameTabsDialog.h index 734f270bc..157e6a995 100644 --- a/src/RenameTabsDialog.h +++ b/src/RenameTabsDialog.h @@ -49,6 +49,9 @@ public: void setTabTitleText(const QString&); void setRemoteTabTitleText(const QString&); + void focusTabTitleText(); + void focusRemoteTabTitleText(); + public slots: void insertTabTitleText(const QString& text); void insertRemoteTabTitleText(const QString& text); diff --git a/src/Session.cpp b/src/Session.cpp index d1834dbb1..d05cbfef6 100644 --- a/src/Session.cpp +++ b/src/Session.cpp @@ -897,6 +897,14 @@ bool Session::updateForegroundProcessInfo() return valid; } +bool Session::isRemote() +{ + ProcessInfo* process = getProcessInfo(); + + bool ok = false; + return ( process->name(&ok) == "ssh" && ok ); +} + QString Session::getDynamicTitle() { // update current directory from process diff --git a/src/Session.h b/src/Session.h index de78951bc..def9f92e9 100644 --- a/src/Session.h +++ b/src/Session.h @@ -151,6 +151,13 @@ public: */ RemoteTabTitle }; + + /** + * Returns true if the session currently contains a connection to a + * remote computer. It currently supports ssh. + */ + bool isRemote(); + /** * Sets the format used by this session for tab titles. * diff --git a/src/SessionController.cpp b/src/SessionController.cpp index cdfa66e8b..abca6e388 100644 --- a/src/SessionController.cpp +++ b/src/SessionController.cpp @@ -550,6 +550,12 @@ void SessionController::renameSession() dialog->setTabTitleText(_session->tabTitleFormat(Session::LocalTabTitle)); dialog->setRemoteTabTitleText(_session->tabTitleFormat(Session::RemoteTabTitle)); + if (!_session->isRemote()) { + dialog->focusTabTitleText(); + } else { + dialog->focusRemoteTabTitleText(); + } + QPointer guard(_session); int result = dialog->exec(); if (!guard)