Defer construction of temporary cursor.

We were doing this on every mouse movement. I.e., for every single
pixel the mouse traverses. It can be expensive if there are a lot
of math insets.
This commit is contained in:
Richard Kimberly Heck 2024-04-16 12:15:50 -04:00
parent cdcaf0e7b6
commit 4e8aa89eb9

View File

@ -2692,11 +2692,6 @@ void BufferView::mouseEventDispatch(FuncRequest const & cmd0)
// LFUN_FILE_OPEN generated by drag-and-drop.
FuncRequest cmd = cmd0;
Cursor old = cursor();
Cursor cur(*this);
cur.push(buffer_.inset());
cur.selection(d->cursor_.selection());
// Either the inset under the cursor or the
// surrounding Text will handle this event.
@ -2714,6 +2709,11 @@ void BufferView::mouseEventDispatch(FuncRequest const & cmd0)
return;
}
Cursor old = cursor();
Cursor cur(*this);
cur.push(buffer_.inset());
cur.selection(d->cursor_.selection());
// Build temporary cursor.
Inset * inset = d->text_metrics_[&buffer_.text()].editXY(cur, cmd.x(), cmd.y());
if (inset) {