// start at top if replaceall
bool fw = forward;
if (replaceall) {
- text->clearSelection(bv);
+ text->clearSelection();
if (text->inset_owner) {
bv->unlockInset(bv->theLockingInset());
text = bv->text;
}
}
- bool found;
+ bool found = false;
int replace_count = 0;
do {
bv->hideCursor();
bv->theLockingInset()->searchBackward(bv, searchstr, casesens, matchwrd);
if (found)
result = SR_FOUND_NOUPDATE;
+ else {
+ text = bv->getLyXText();
+ Paragraph * par = text->cursor.par();
+ Paragraph::size_type pos = text->cursor.pos();
+ if (forward) {
+ if (pos < par->size() - 1)
+ ++pos;
+ else {
+ pos = 0;
+ par = par->next();
+ }
+ if (par)
+ text->setCursor(bv, par, pos);
+ }
+ if (par) {
+ result = forward ?
+ SearchForward(bv, text, searchstr, casesens, matchwrd) :
+ SearchBackward(bv, text, searchstr, casesens, matchwrd);
+ }
+ }
} else {
result = forward ?
SearchForward(bv, text, searchstr, casesens, matchwrd) :
// the actual text pointer could have changed!
bv->update(bv->getLyXText(), BufferView::SELECT|BufferView::FITCUR);
bv->toggleSelection();
- bv->getLyXText()->clearSelection(bv);
+ bv->getLyXText()->clearSelection();
bv->getLyXText()->setSelectionOverString(bv, searchstr);
bv->toggleSelection(false);
bv->update(bv->getLyXText(), BufferView::SELECT|BufferView::FITCUR);
// test if we're inside an inset if yes unlock the inset
// and recall us with the outside LyXText!
bv->unlockInset((UpdatableInset *)text->inset_owner);
- text = bv->getLyXText();
- par = text->cursor.par();
- pos = text->cursor.pos();
- if (pos < par->size() - 1)
- ++pos;
- else {
- pos = 0;
- par = par->next();
- }
- if (!par)
+ if (!bv->theLockingInset()) {
+ text = bv->getLyXText();
+ par = text->cursor.par();
+ pos = text->cursor.pos();
+ if (pos < par->size() - 1)
+ ++pos;
+ else {
+ pos = 0;
+ par = par->next();
+ }
+ if (!par)
+ return SR_NOT_FOUND;
+ text->setCursor(bv, par, pos);
+ return SearchForward(bv, text, str, cs, mw);
+ } else {
return SR_NOT_FOUND;
- text->setCursor(bv, par, pos);
- return SearchForward(bv, text, str, cs, mw);
+ }
} else
return SR_NOT_FOUND;
}
// test if we're inside an inset if yes unlock the inset
// and recall us with the outside LyXText!
bv->unlockInset((UpdatableInset *)text->inset_owner);
- return SearchBackward(bv, bv->getLyXText(), str, cs, mw);
- } else {
- return SR_NOT_FOUND;
+ if (!bv->theLockingInset()) {
+ return SearchBackward(bv, bv->getLyXText(), str, cs, mw);
+ }
}
+ return SR_NOT_FOUND;
}