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.

(cherry picked from commit 4e8aa89eb9)
This commit is contained in:
Richard Kimberly Heck 2024-04-16 12:15:50 -04:00
parent d29baf59a4
commit 365ff71e23

View File

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