Fix bug #8238: correct the forward argument of replace2string() in on_replacePB_clicked().

(cherry picked from commit 44b3278006)
Fix the wrong cursor move when forward flag is false:
The forward flag is used to place the cursor behind the replaced text if it's true.
But it's not correct to move the cursor if it's false. The cursor is in front of the
replacement already after the replaceSelectionWithString() was done.
(cherry picked from commit 430cf3ee5e)
This commit is contained in:
Stephan Witt 2012-07-27 00:34:17 +02:00
parent a4db6d6c14
commit 7cc30cdf29
4 changed files with 21 additions and 8 deletions

View File

@ -315,8 +315,13 @@ void SpellcheckerWidget::on_replacePB_clicked()
return;
docstring const textfield = qstring_to_ucs4(d->ui.wordED->text());
docstring const replacement = qstring_to_ucs4(d->ui.replaceCO->currentText());
docstring const datastring = replace2string(replacement, textfield,
true, true, false, false);
docstring const datastring =
replace2string(replacement, textfield,
true, // case sensitive
true, // match word
false, // all words
true, // forward
false); // find next
LYXERR(Debug::GUI, "Replace (" << replacement << ")");
dispatch(FuncRequest(LFUN_WORD_REPLACE, datastring));
@ -332,8 +337,13 @@ void SpellcheckerWidget::on_replaceAllPB_clicked()
return;
docstring const textfield = qstring_to_ucs4(d->ui.wordED->text());
docstring const replacement = qstring_to_ucs4(d->ui.replaceCO->currentText());
docstring const datastring = replace2string(replacement, textfield,
true, true, true, true);
docstring const datastring =
replace2string(replacement, textfield,
true, // case sensitive
true, // match word
true, // all words
true, // forward
false); // find next
LYXERR(Debug::GUI, "Replace all (" << replacement << ")");
dispatch(FuncRequest(LFUN_WORD_REPLACE, datastring));

View File

@ -783,7 +783,11 @@ void MenuDefinition::expandSpellingSuggestions(BufferView const * bv)
MenuItem w(MenuItem::Command, toqstr(suggestion),
FuncRequest(LFUN_WORD_REPLACE,
replace2string(suggestion, selection,
true, true, false, true, false)));
true, // case sensitive
true, // match word
false, // all words
true, // forward
false))); // find next
if (i < m)
add(w);
else

View File

@ -275,9 +275,6 @@ pair<bool, int> replaceOne(BufferView * bv, docstring searchstr,
if (forward) {
cur.pos() += replacestr.length();
LASSERT(cur.pos() <= cur.lastpos(), /* */);
} else {
cur.pos() -= replacestr.length();
LASSERT(cur.pos() >= 0, /* */);
}
if (findnext)
findOne(bv, searchstr, case_sens, whole, forward, false);

View File

@ -138,6 +138,8 @@ What's new
- When using a non-default language for the GUI, do not change locale
settings of child proceses (bug 7741).
- Fix crash in text replacement with spell checker (bug 8238).
* DOCUMENTATION AND LOCALIZATION