X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiSpellchecker.cpp;h=10edda44629b9b24705a5ed14d0113403dce9b3c;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=b1cfcef655a2b7ed2ca5215055333c32cb3a5fc6;hpb=70a24259f8e3eb75677178ef5e28ecbb51c2935b;p=lyx.git diff --git a/src/frontends/qt4/GuiSpellchecker.cpp b/src/frontends/qt4/GuiSpellchecker.cpp index b1cfcef655..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,7 +95,25 @@ void GuiSpellchecker::on_closePB_clicked() } -void GuiSpellchecker::on_suggestionsLW_itemChanged(QListWidgetItem * item) +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) d->ui.replaceCO->setItemText(0, item->text()); @@ -194,13 +215,13 @@ void GuiSpellchecker::updateSuggestions(docstring_list & words) lw->clear(); if (words.empty()) { - on_suggestionsLW_itemChanged(new QListWidgetItem(suggestion)); + on_suggestionsLW_itemClicked(new QListWidgetItem(suggestion)); return; } for (size_t i = 0; i != words.size(); ++i) lw->addItem(toqstr(words[i])); - on_suggestionsLW_itemChanged(lw->item(0)); + on_suggestionsLW_itemClicked(lw->item(0)); lw->setCurrentRow(0); }