mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 13:18:28 +00:00
Fix crash when selecting text with changes
When selecting text, in some cases a DocIterator could be forwarded to a (non-existant) paragraph after the end. The critical part of this fix is to break the loop at the correct place. The following are additional improvements: - increase readability by defining a bool named "in_last_par" - use cur.selectionEnd().pit() instead of cur.selectionEnd().paragraph().id() - use it.lastpos() instead of it.paragraph().size() This commit fixes a regression introduced by23de5e5e
, and reported at #11204. Thanks to Jürgen and JMarc. (cherry picked from commitd12798759a
)
This commit is contained in:
parent
890fb133b1
commit
0af6a43b6a
@ -3207,17 +3207,20 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
|
||||
if (!cur.buffer()->areChangesPresent())
|
||||
break;
|
||||
|
||||
for (DocIterator it = cur.selectionBegin(); it < cur.selectionEnd(); it.forwardPar()) {
|
||||
for (DocIterator it = cur.selectionBegin(); ; it.forwardPar()) {
|
||||
pos_type const beg = it.pos();
|
||||
pos_type end;
|
||||
if (it.paragraph().id() == cur.selectionEnd().paragraph().id())
|
||||
bool const in_last_par = (it.pit() == cur.selectionEnd().pit());
|
||||
if (in_last_par)
|
||||
end = cur.selectionEnd().pos();
|
||||
else
|
||||
end = it.paragraph().size();
|
||||
end = it.lastpos();
|
||||
if (beg != end && it.paragraph().isChanged(beg, end)) {
|
||||
enable = true;
|
||||
break;
|
||||
}
|
||||
if (in_last_par)
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user