From: Jürgen Spitzmüller Date: Sun, 17 Jan 2010 12:27:44 +0000 (+0000) Subject: * GuiSpellchecker: X-Git-Tag: 2.0.0~4338 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=56b2ee289b0d9fe6c9752010bb5501d0f0137413;p=lyx.git * GuiSpellchecker: - implement event filter and allow selection of suggestions with the keyboard (second part of bug 6460). git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33069 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/frontends/qt4/GuiSpellchecker.cpp b/src/frontends/qt4/GuiSpellchecker.cpp index c6a4adf20b..10edda4462 100644 --- a/src/frontends/qt4/GuiSpellchecker.cpp +++ b/src/frontends/qt4/GuiSpellchecker.cpp @@ -41,6 +41,7 @@ #include "support/textutils.h" #include +#include #include "SpellChecker.h" @@ -77,6 +78,8 @@ GuiSpellchecker::GuiSpellchecker(GuiView & lv) this, SLOT(on_replacePB_clicked())); d->ui.wordED->setReadOnly(true); + + d->ui.suggestionsLW->installEventFilter(this); } @@ -92,6 +95,24 @@ void GuiSpellchecker::on_closePB_clicked() } +bool GuiSpellchecker::eventFilter(QObject *obj, QEvent *event) +{ + if (obj == d->ui.suggestionsLW && event->type() == QEvent::KeyPress) { + QKeyEvent *e = static_cast (event); + if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return) { + on_suggestionsLW_itemClicked(d->ui.suggestionsLW->currentItem()); + on_replacePB_clicked(); + return true; + } else if (e->key() == Qt::Key_Right) { + on_suggestionsLW_itemClicked(d->ui.suggestionsLW->currentItem()); + return true; + } + } + // standard event processing + return QWidget::eventFilter(obj, event); +} + + void GuiSpellchecker::on_suggestionsLW_itemClicked(QListWidgetItem * item) { if (d->ui.replaceCO->count() != 0) diff --git a/src/frontends/qt4/GuiSpellchecker.h b/src/frontends/qt4/GuiSpellchecker.h index 58458e8ec8..937d4f294b 100644 --- a/src/frontends/qt4/GuiSpellchecker.h +++ b/src/frontends/qt4/GuiSpellchecker.h @@ -62,6 +62,8 @@ private: /// show count of checked words at normal exit void showSummary(); + bool eventFilter(QObject *obj, QEvent *event); + struct Private; Private * const d; };