mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 13:18:28 +00:00
final(?) tweaks for removeAutoInsets() and removed one redundant conditional clause elsewhere
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3382 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
fb424bae1b
commit
b06f4c5af2
@ -107,11 +107,10 @@ bool BufferView::insertLyXFile(string const & filen)
|
||||
|
||||
bool BufferView::removeAutoInsets()
|
||||
{
|
||||
LyXCursor tmpcursor = text->cursor;
|
||||
Paragraph * cur_par = tmpcursor.par();
|
||||
Paragraph * cur_par = text->cursor.par();
|
||||
Paragraph * cur_par_prev = cur_par ? cur_par->previous() : 0;
|
||||
Paragraph * cur_par_next = cur_par ? cur_par->next() : 0;
|
||||
pos_type cur_pos = tmpcursor.pos();
|
||||
pos_type cur_pos = text->cursor.pos();
|
||||
|
||||
bool found = false;
|
||||
|
||||
@ -153,6 +152,11 @@ bool BufferView::removeAutoInsets()
|
||||
// The previous setCursor line was deleted and that
|
||||
// was the cur_par line. This can only happen if an
|
||||
// error box was the sole item on cur_par.
|
||||
// It is possible for cur_par_prev to be stray if
|
||||
// the line it pointed to only had a error box on it
|
||||
// so we have to set it to a known correct value.
|
||||
// This is often the same value it already had.
|
||||
cur_par_prev = par->previous();
|
||||
if (cur_par_prev) {
|
||||
// '|' = par, '.' = cur_par, 'E' = error box
|
||||
// First step below may occur before while{}
|
||||
@ -203,6 +207,20 @@ bool BufferView::removeAutoInsets()
|
||||
}
|
||||
}
|
||||
|
||||
// It is possible that the last line is empty if it was cur_par and/or
|
||||
// only had an error inset on it.
|
||||
if (text->setCursor(this, text->ownerParagraph(), 0)
|
||||
&& 0 == cur_par_next) {
|
||||
cur_par = cur_par_prev;
|
||||
cur_pos = cur_par->size();
|
||||
} else if (cur_pos > cur_par->size()) {
|
||||
// Some C-Enter lines were removed by the setCursor call which
|
||||
// then invalidated cur_pos. It could still be "wrong" because
|
||||
// the cursor may appear to have jumped but since we collapsed
|
||||
// some C-Enter lines this should be a reasonable compromise.
|
||||
cur_pos = cur_par->size();
|
||||
}
|
||||
|
||||
text->setCursorIntern(this, cur_par, cur_pos);
|
||||
|
||||
return found;
|
||||
|
@ -1,3 +1,11 @@
|
||||
2002-01-15 Allan Rae <rae@lyx.org>
|
||||
|
||||
* text.C (insertChar): removed conditional truism.
|
||||
|
||||
* BufferView2.C (removeAutoInsets): More tweaks.
|
||||
cur_par_prev could be a stray pointer. Check for trailing empty line
|
||||
in case last line was cur_par and only had an error inset on it.
|
||||
|
||||
2002-01-14 Jean-Marc Lasgouttes <lasgouttes@freesurf.fr>
|
||||
|
||||
* lyx_cb.C (MenuWrite): buffer->fileName is guaranteed to be
|
||||
|
@ -1892,8 +1892,8 @@ void LyXText::insertChar(BufferView * bview, char c)
|
||||
return;
|
||||
}
|
||||
} else if (IsNewlineChar(c)) {
|
||||
if (cursor.par() == cursor.par()
|
||||
&& cursor.pos() <= beginningOfMainBody(bview->buffer(), cursor.par())) {
|
||||
if (cursor.pos() <= beginningOfMainBody(bview->buffer(),
|
||||
cursor.par())) {
|
||||
charInserted();
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user