}
-bool BufferView::fitCursor()
+bool BufferView::needsFitCursor() const
{
if (cursorStatus(d->cursor_) == CUR_INSIDE) {
frontend::FontMetrics const & fm =
// Now do the first drawing step if needed. This consists on updating
// the CoordCache in updateMetrics().
// The second drawing step is done in WorkArea::redraw() if needed.
+ // FIXME: is this still true now that Buffer::changed() is used all over?
// Case when no explicit update is requested.
if (!flags) {
if (flags == Update::FitCursor
|| flags == (Update::Decoration | Update::FitCursor)) {
// tell the frontend to update the screen if needed.
- if (fitCursor()) {
+ if (needsFitCursor()) {
showCursor();
return;
}
// This is done at draw() time. So we need a redraw!
buffer_.changed(false);
- if (fitCursor()) {
+ if (needsFitCursor()) {
// The cursor is off screen so ensure it is visible.
// refresh it:
showCursor();
// paragraph position which is computed at draw() time.
// So we need a redraw!
buffer_.changed(false);
- if (fitCursor())
+ if (needsFitCursor())
showCursor();
}
*/
void processUpdateFlags(Update::flags flags);
- /// move the screen to fit the cursor.
+ /// return true if one shall move the screen to fit the cursor.
/// Only to be called with good y coordinates (after a bv::metrics)
- bool fitCursor();
+ bool needsFitCursor() const;
// Returns the amount of horizontal scrolling applied to the
// top-level row where the cursor lies
void recenter();
/// Ensure that the BufferView cursor is visible.
/// This method will automatically scroll and update the BufferView
- /// if needed.
+ /// (metrics+drawing) if needed.
void showCursor();
/// Ensure the passed cursor \p dit is visible.
/// This method will automatically scroll and update the BufferView
- /// if needed.
+ /// (metrics+drawing) if needed.
/// \param recenter Whether the cursor should be centered on screen
void showCursor(DocIterator const & dit, bool recenter,
bool update);