os << "------------------------------- | " << cur.anchor_[i] << "\n";
}
os << " selection: " << cur.selection_
- << " x_target: " << cur.x_target_ << endl;
+ << " x_target: " << cur.x_target_
+ << " boundary: " << cur.boundary() << endl;
return os;
}
next_row = 0;
}
}
- top().pos() = min(tm.x2pos(pit(), next_row, xo), top().lastpos());
- int const xpos = tm.x2pos(pit(), next_row, xo);
- bool const at_end_row = xpos == tm.x2pos(pit(), next_row, tm.width());
- bool const at_beg_row = xpos == tm.x2pos(pit(), next_row, 0);
-
- if (at_end_row && at_beg_row)
- // make sure the cursor ends up on this row
- boundary(false);
- else
- boundary(at_end_row);
+ Row const & real_next_row = tm.parMetrics(pit()).rows()[next_row];
+ bool bound = false;
+ pos_type const col = tm.getColumnNearX(pit(), real_next_row,
+ xo, bound);
+ top().pos() = real_next_row.pos() + col;
+ boundary(bound);
updateNeeded |= bv().checkDepm(*this, old);
}