mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 03:11:59 +00:00
Text::dispatch: ignore single par update when there is a full update
Reorder the tests so that, when the flag Update::SinglePar has been specified, it does not take precedence over Update::Force flag. This fixes the crash with inset-split.
This commit is contained in:
parent
c96d3a0340
commit
a185642746
16
src/Text.cpp
16
src/Text.cpp
@ -6378,27 +6378,17 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: The cursor flag is reset two lines below
|
|
||||||
// so we need to check here if some of the LFUN did touch that.
|
|
||||||
// for now only Text::erase() and Text::backspace() do that.
|
|
||||||
// The plan is to verify all the LFUNs and then to remove this
|
|
||||||
// singleParUpdate boolean altogether.
|
|
||||||
if (cur.result().screenUpdate() & Update::Force) {
|
|
||||||
singleParUpdate = false;
|
|
||||||
needsUpdate = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME: the following code should go in favor of fine grained
|
// FIXME: the following code should go in favor of fine grained
|
||||||
// update flag treatment.
|
// update flag treatment.
|
||||||
if (singleParUpdate || cur.result().screenUpdate() & Update::SinglePar) {
|
if (needsUpdate || cur.result().screenUpdate() & Update::Force)
|
||||||
|
cur.screenUpdateFlags(Update::Force | Update::FitCursor);
|
||||||
|
else if (singleParUpdate || cur.result().screenUpdate() & Update::SinglePar) {
|
||||||
// Inserting characters does not change par height in general. So, try
|
// Inserting characters does not change par height in general. So, try
|
||||||
// to update _only_ this paragraph. BufferView will detect if a full
|
// to update _only_ this paragraph. BufferView will detect if a full
|
||||||
// metrics update is needed anyway.
|
// metrics update is needed anyway.
|
||||||
cur.screenUpdateFlags(Update::SinglePar | Update::FitCursor);
|
cur.screenUpdateFlags(Update::SinglePar | Update::FitCursor);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (needsUpdate)
|
|
||||||
cur.screenUpdateFlags(Update::Force | Update::FitCursor);
|
|
||||||
else {
|
else {
|
||||||
// oldSelection is a backup of cur.selection() at the beginning of the function.
|
// oldSelection is a backup of cur.selection() at the beginning of the function.
|
||||||
if (!oldSelection && !cur.selection())
|
if (!oldSelection && !cur.selection())
|
||||||
|
Loading…
Reference in New Issue
Block a user