diff --git a/src/plugins/clangtools/clangtoolsdiagnosticview.cpp b/src/plugins/clangtools/clangtoolsdiagnosticview.cpp index 4758546f349..e03184d4fc4 100644 --- a/src/plugins/clangtools/clangtoolsdiagnosticview.cpp +++ b/src/plugins/clangtools/clangtoolsdiagnosticview.cpp @@ -46,6 +46,7 @@ DiagnosticView::DiagnosticView(QWidget *parent) m_suppressAction = new QAction(tr("Suppress This Diagnostic"), this); connect(m_suppressAction, &QAction::triggered, this, &DiagnosticView::suppressCurrentDiagnostic); + installEventFilter(this); } void DiagnosticView::suppressCurrentDiagnostic() @@ -80,5 +81,27 @@ QList DiagnosticView::customActions() const return QList() << m_suppressAction; } +bool DiagnosticView::eventFilter(QObject *watched, QEvent *event) +{ + switch (event->type()) { + case QEvent::KeyRelease: { + const int key = static_cast(event)->key(); + switch (key) { + case Qt::Key_Return: + case Qt::Key_Enter: + case Qt::Key_Space: + const QModelIndex current = currentIndex(); + const QModelIndex location = model()->index(current.row(), + LocationColumn, + current.parent()); + emit clicked(location); + } + return true; + } + default: + return QObject::eventFilter(watched, event); + } +} + } // namespace Internal } // namespace ClangTools diff --git a/src/plugins/clangtools/clangtoolsdiagnosticview.h b/src/plugins/clangtools/clangtoolsdiagnosticview.h index bd18f9b451e..6eff2ebf72a 100644 --- a/src/plugins/clangtools/clangtoolsdiagnosticview.h +++ b/src/plugins/clangtools/clangtoolsdiagnosticview.h @@ -41,6 +41,7 @@ private: void suppressCurrentDiagnostic(); QList customActions() const; + bool eventFilter(QObject *watched, QEvent *event) override; QAction *m_suppressAction; };