+ if (cur && pit_changed)
+ cur.pos() = cur.lastpos();
+ for (; cur; cur.backwardPos()) {
+ if (match(cur)) {
+ // Find the most backward consecutive match within same paragraph while searching backwards.
+ int pit = cur.pit();
+ int old_len;
+ DocIterator old_cur;
+ int len = findAdvFinalize(cur, match);
+ do {
+ old_cur = cur;
+ old_len = len;
+ cur.backwardPos();
+ LYXERR(Debug::DEBUG, "old_cur: " << old_cur << ", old_len=" << len << ", cur: " << cur);
+ } while (cur && cur.pit() == pit && match(cur)
+ && (len = findAdvFinalize(cur, match)) > old_len);
+ cur = old_cur;
+ len = old_len;
+ LYXERR(Debug::DEBUG, "cur_orig : " << cur_orig);
+ LYXERR(Debug::DEBUG, "cur : " << cur);
+ if (cur != cur_orig)
+ return len;
+ }
+ }
+ wrap_answer = frontend::Alert::prompt(
+ _("Wrap search ?"),
+ _("Beginning of document reached while searching backwards\n"
+ "\n"
+ "Continue searching from end ?"),
+ 0, 1, _("&Yes"), _("&No"));
+ cur = doc_iterator_end(&match.buf);
+ cur.backwardPos();
+ } while (wrap_answer == 0);