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;