- Cursor cur(*bv);
- cur.setCursor(next ? bv->cursor().selectionEnd()
- : bv->cursor().selectionBegin());
-
- // Are we within a change ? Then first search forward (backward),
- // clear the selection and search the other way around (see the end
- // of this function). This will avoid changes to be selected half.
- bool search_both_sides = false;
- Cursor tmpcur = cur;
- // Find enclosing text cursor
- while (tmpcur.inMathed())
- tmpcur.pop_back();
- Change change_next_pos
- = tmpcur.paragraph().lookupChange(tmpcur.pos());
- if (change_next_pos.changed()) {
- if (cur.inMathed()) {
- cur = tmpcur;
- search_both_sides = true;
- } else if (tmpcur.pos() > 0 && tmpcur.inTexted()) {
- Change change_prev_pos
- = tmpcur.paragraph().lookupChange(tmpcur.pos() - 1);
- if (change_next_pos.isSimilarTo(change_prev_pos))
- search_both_sides = true;
- }
+ for (cur.backwardPos(); cur; cur.backwardPos()) {
+ if (cur.inTexted() && cur.paragraph().isChanged(cur.pos()))
+ return true;