diff --git a/src/plugins/find/findtoolwindow.cpp b/src/plugins/find/findtoolwindow.cpp index 2058af703e4..5b4bf7d35e3 100644 --- a/src/plugins/find/findtoolwindow.cpp +++ b/src/plugins/find/findtoolwindow.cpp @@ -36,6 +36,7 @@ #include #include #include +#include using namespace Find; using namespace Find::Internal; @@ -56,6 +57,7 @@ FindToolWindow::FindToolWindow(FindPlugin *plugin) connect(m_ui.searchTerm, SIGNAL(textChanged(QString)), this, SLOT(updateButtonStates())); m_findCompleter->setModel(m_plugin->findCompletionModel()); m_ui.searchTerm->setCompleter(m_findCompleter); + m_ui.searchTerm->installEventFilter(this); QVBoxLayout *layout = new QVBoxLayout; layout->setMargin(0); layout->setSpacing(0); @@ -68,6 +70,17 @@ FindToolWindow::~FindToolWindow() qDeleteAll(m_configWidgets); } +bool FindToolWindow::eventFilter(QObject *obj, QEvent *event) +{ + if (obj == m_ui.searchTerm && event->type() == QEvent::KeyPress) { + QKeyEvent *ke = static_cast(event); + if (ke->key() == Qt::Key_Down) { + m_findCompleter->complete(); + } + } + return QDialog::eventFilter(obj, event); +} + void FindToolWindow::updateButtonStates() { bool enabled = !m_ui.searchTerm->text().isEmpty() diff --git a/src/plugins/find/findtoolwindow.h b/src/plugins/find/findtoolwindow.h index b4575edbceb..2bbdf784533 100644 --- a/src/plugins/find/findtoolwindow.h +++ b/src/plugins/find/findtoolwindow.h @@ -57,6 +57,9 @@ public: void readSettings(); void writeSettings(); +protected: + bool eventFilter(QObject *obj, QEvent *event); + private slots: void search(); void replace();