#include "support/textutils.h"
#include <QListWidgetItem>
+#include <QKeyEvent>
#include "SpellChecker.h"
this, SLOT(on_replacePB_clicked()));
d->ui.wordED->setReadOnly(true);
+
+ d->ui.suggestionsLW->installEventFilter(this);
}
}
-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<QKeyEvent *> (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());
LYXERR(Debug::GUI, "Replace (" << replacement << ")");
BufferView * bv = const_cast<BufferView *>(bufferview());
+ if (!bv->cursor().inTexted())
+ return;
cap::replaceSelectionWithString(bv->cursor(), replacement, true);
bv->buffer().markDirty();
// If we used an LFUN, we would not need that
void GuiSpellchecker::on_replaceAllPB_clicked()
{
docstring const data = replace2string(
- qstring_to_ucs4(d->ui.wordED->text()),
qstring_to_ucs4(d->ui.replaceCO->currentText()),
+ qstring_to_ucs4(d->ui.wordED->text()),
true, true, true, true);
dispatch(FuncRequest(LFUN_WORD_REPLACE, data));
+ check(); // continue spellchecking
}
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);
}