patch against infinite depth from Martin

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3593 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2002-02-27 11:36:20 +00:00
parent d03f2aab75
commit bf954a7bc3
2 changed files with 21 additions and 10 deletions

View File

@ -1,3 +1,8 @@
2002-02-26 Martin Vermeer <martin.vermeer@hut.fi>
* text2.C (incDepth): make sure depth cannot be increased beyond
reasonable values.
2002-02-20 Angus Leeming <a.leeming@ic.ac.uk>
* lyxfunc.C (dispatch): act on LFUN_FORKS_SHOW and LFUN_FORKS_KILL.

View File

@ -649,19 +649,25 @@ void LyXText::incDepth(BufferView * bview)
while (true) {
// NOTE: you can't change the depth of a bibliography entry
if (
textclasslist.Style(bview->buffer()->params.textclass,
cursor.par()->getLayout()
).labeltype != LABEL_BIBLIO) {
if (textclasslist.Style(bview->buffer()->params.textclass,
cursor.par()->getLayout()).labeltype != LABEL_BIBLIO) {
Paragraph * prev = cursor.par()->previous();
if (prev
&& (prev->getDepth() - cursor.par()->getDepth() > 0
|| (prev->getDepth() == cursor.par()->getDepth()
if (prev) {
const int depth_diff
= prev->getDepth() - cursor.par()->getDepth();
// go deeper only if
// (1) the previous para is already
// deeper (depth_diff > 0)
// (2) the previous para is a
// list-environment at the same
// depth as this para.
if (depth_diff > 0 || (depth_diff > -1
&& textclasslist.Style(bview->buffer()->params.textclass,
prev->getLayout()).isEnvironment()))) {
cursor.par()->params().depth(cursor.par()->params().depth() + 1);
anything_changed = true;
prev->getLayout()).isEnvironment())) {
cursor.par()->params().depth(cursor.par()->params().depth() + 1);
anything_changed = true;
}
}
}
if (cursor.par() == selection.end.par())