Stabilize mouse selection in mathed

Fixes: #9074
This commit is contained in:
Juergen Spitzmueller 2014-05-06 16:12:45 +02:00
parent bd206ff5f5
commit 5160fa1043
2 changed files with 24 additions and 9 deletions

View File

@ -1567,16 +1567,29 @@ void InsetMathNest::lfunMousePress(Cursor & cur, FuncRequest & cmd)
void InsetMathNest::lfunMouseMotion(Cursor & cur, FuncRequest & cmd)
{
// only select with button 1
if (cmd.button() == mouse_button::button1) {
Cursor & bvcur = cur.bv().cursor();
if (bvcur.realAnchor().hasPart(cur)) {
//lyxerr << "## lfunMouseMotion: cursor: " << cur << endl;
bvcur.setCursor(cur);
bvcur.setSelection(true);
//lyxerr << "MOTION " << bvcur << endl;
} else
cur.undispatched();
if (cmd.button() != mouse_button::button1)
return;
Cursor & bvcur = cur.bv().cursor();
// ignore motions deeper nested than the real anchor
if (!bvcur.realAnchor().hasPart(cur)) {
cur.undispatched();
return;
}
CursorSlice old = bvcur.top();
// We continue with our existing selection or start a new one, so don't
// reset the anchor.
bvcur.setCursor(cur);
// Did we actually move?
if (cur.top() == old)
// We didn't move one iota, so no need to change selection status
// or update the screen.
cur.screenUpdateFlags(Update::SinglePar | Update::FitCursor);
else
bvcur.setSelection();
}

View File

@ -101,6 +101,8 @@ What's new
- Fix select-by-doubleclick in mathed (bug 8829).
- Make selection by mouse drag more reliable in mathed (bug 9074).
- Fix undo with many individual changes (e.g. with replace all)
(bug #7079).