Private(BufferView & bv): wh_(0), cursor_(bv),
anchor_pit_(0), anchor_ypos_(0),
inlineCompletionUniqueChars_(0),
- last_inset_(0), gui_(0)
+ last_inset_(0), bookmark_edit_position_(0), gui_(0)
{}
///
*/
Inset * last_inset_;
+ // cache for id of the paragraph which was edited the last time
+ int bookmark_edit_position_;
+
mutable TextMetricsCache text_metrics_;
/// Whom to notify.
}
+void BufferView::bookmarkEditPosition()
+{
+ // Don't eat cpu time for each keystroke
+ if (d->cursor_.paragraph().id() == d->bookmark_edit_position_)
+ return;
+ saveBookmark(0);
+ d->bookmark_edit_position_ = d->cursor_.paragraph().id();
+}
+
+
void BufferView::saveBookmark(unsigned int idx)
{
// tentatively save bookmark, id and pos will be used to
if (ypos - row_dim.ascent() < 0)
scrolled = scrollUp(- ypos + row_dim.ascent());
else if (ypos + row_dim.descent() > height_)
- scrolled = scrollDown(ypos - defaultRowHeight());
+ scrolled = scrollDown(ypos - height_ + defaultRowHeight() );
// else, nothing to do, the cursor is already visible so we just return.
if (scrolled != 0) {
return true;
if (a.empty() || b.empty())
return false;
+ if (a.depth() != b.depth())
+ return false;
return &a.innerParagraph() == &b.innerParagraph();
}