From acd507e1a55446c6d46d1a2cdbb32a516ae1a021 Mon Sep 17 00:00:00 2001 From: Kurt Hindenburg Date: Sun, 13 Feb 2011 21:29:15 -0500 Subject: [PATCH] Set correct focus in the "rename tab" dialog. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, the OK button has the focus upon startup. After patch, the user doesn't need to remember if they need to adjust the remote or local title. Patch by Sebastian Kühn http://git.reviewboard.kde.org/r/100642/ --- src/RenameTabsDialog.cpp | 9 +++++++++ src/RenameTabsDialog.h | 3 +++ src/Session.cpp | 8 ++++++++ src/Session.h | 7 +++++++ src/SessionController.cpp | 6 ++++++ 5 files changed, 33 insertions(+) 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)