diff --git a/src/plugins/debugger/debuggerdialogs.cpp b/src/plugins/debugger/debuggerdialogs.cpp
index 4796a9b0f19b77b42d2cbbd856472e6861205c38..d503983904d4e9a6b8630b56701cefe87fe6419e 100644
--- a/src/plugins/debugger/debuggerdialogs.cpp
+++ b/src/plugins/debugger/debuggerdialogs.cpp
@@ -259,7 +259,7 @@ AttachExternalDialog::AttachExternalDialog(QWidget *parent)
     connect(m_ui->filterClearToolButton, SIGNAL(clicked()),
             m_ui->filterLineEdit, SLOT(clear()));
     connect(m_ui->filterLineEdit, SIGNAL(textChanged(QString)),
-            m_model, SLOT(setFilterFixedString(QString)));
+            this, SLOT(setFilterString(QString)));
 
     rebuildProcessList();
 }
@@ -269,6 +269,17 @@ AttachExternalDialog::~AttachExternalDialog()
     delete m_ui;
 }
 
+void AttachExternalDialog::setFilterString(const QString &filter)
+{
+    m_model->setFilterFixedString(filter);
+    // Activate the line edit if there's a unique filtered process.
+    QString processId;
+    if (m_model->rowCount(QModelIndex()) == 1)
+        processId = m_model->processIdAt(m_model->index(0, 0, QModelIndex()));
+    m_ui->pidLineEdit->setText(processId);
+    pidChanged(processId);
+}
+
 QPushButton *AttachExternalDialog::okButton() const
 {
     return m_ui->buttonBox->button(QDialogButtonBox::Ok);
@@ -284,9 +295,9 @@ void AttachExternalDialog::rebuildProcessList()
 
 void AttachExternalDialog::procSelected(const QModelIndex &proxyIndex)
 {
-    const QString proccessId  = m_model->processIdAt(proxyIndex);
-    if (!proccessId.isEmpty()) {
-        m_ui->pidLineEdit->setText(proccessId);
+    const QString processId  = m_model->processIdAt(proxyIndex);
+    if (!processId.isEmpty()) {
+        m_ui->pidLineEdit->setText(processId);
         if (okButton()->isEnabled())
             okButton()->animateClick();
     }
diff --git a/src/plugins/debugger/debuggerdialogs.h b/src/plugins/debugger/debuggerdialogs.h
index 2b63fa3e9e80f05bb83f35abcee218a78d9b6304..d20f7e7c249cfe23cdc5a3ce8cb8bceef69a98dd 100644
--- a/src/plugins/debugger/debuggerdialogs.h
+++ b/src/plugins/debugger/debuggerdialogs.h
@@ -95,6 +95,7 @@ private slots:
     void rebuildProcessList();
     void procSelected(const QModelIndex &);
     void pidChanged(const QString &);
+    void setFilterString(const QString &filter);
 
 private:
     inline QPushButton *okButton() const;