mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
DEPM: allow to delete empty paragraphs after deleting extra spaces
Remove return statement when spaces have been deleted. Add an early return in part 2 when current paragraph is not empty. Remove some comments that concern things that are OK now.
This commit is contained in:
parent
aaab1ad65d
commit
386a347484
@ -818,6 +818,7 @@ bool Text::deleteEmptyParagraphMechanism(Cursor & cur,
|
||||
|
||||
Paragraph & oldpar = old.paragraph();
|
||||
bool const trackChanges = cur.buffer()->params().track_changes;
|
||||
bool result = false;
|
||||
|
||||
// We do nothing if cursor did not move
|
||||
if (cur.top() == old.top())
|
||||
@ -842,8 +843,7 @@ bool Text::deleteEmptyParagraphMechanism(Cursor & cur,
|
||||
* them, but only if the cursor has really moved.
|
||||
*/
|
||||
|
||||
/* Ok I'll put some comments here about what is missing.
|
||||
There are still some small problems that can lead to
|
||||
/* There are still some small problems that can lead to
|
||||
double spaces stored in the document file or space at
|
||||
the beginning of paragraphs(). This happens if you have
|
||||
the cursor between two spaces and then save. Or if you
|
||||
@ -851,14 +851,6 @@ bool Text::deleteEmptyParagraphMechanism(Cursor & cur,
|
||||
beginning and then save right after the paste. (Lgb)
|
||||
*/
|
||||
|
||||
// If old.pos() == 0 and old.pos()(1) == LineSeparator
|
||||
// delete the LineSeparator.
|
||||
// MISSING
|
||||
|
||||
// If old.pos() == 1 and old.pos()(0) == LineSeparator
|
||||
// delete the LineSeparator.
|
||||
// MISSING
|
||||
|
||||
// find range of spaces around cursors
|
||||
pos_type from = old.pos();
|
||||
while (from > 0
|
||||
@ -894,7 +886,7 @@ bool Text::deleteEmptyParagraphMechanism(Cursor & cur,
|
||||
cur[depth].pos() = min(from + 1, old.lastpos());
|
||||
need_anchor_change = true;
|
||||
}
|
||||
return true;
|
||||
result = true;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -903,45 +895,46 @@ bool Text::deleteEmptyParagraphMechanism(Cursor & cur,
|
||||
|
||||
// only do our other magic if we changed paragraph
|
||||
if (same_par)
|
||||
return false;
|
||||
return result;
|
||||
|
||||
// only do our magic if the paragraph is empty
|
||||
if (!oldpar.empty())
|
||||
return result;
|
||||
|
||||
// don't delete anything if this is the ONLY paragraph!
|
||||
if (old.lastpit() == 0)
|
||||
return false;
|
||||
return result;
|
||||
|
||||
// Do not delete empty paragraphs with keepempty set.
|
||||
if (oldpar.allowEmpty())
|
||||
return false;
|
||||
return result;
|
||||
|
||||
if (oldpar.empty() || (oldpar.size() == 1 && oldpar.isLineSeparator(0))) {
|
||||
// Delete old par.
|
||||
old.recordUndo(max(old.pit() - 1, pit_type(0)),
|
||||
min(old.pit() + 1, old.lastpit()));
|
||||
ParagraphList & plist = old.text()->paragraphs();
|
||||
bool const soa = oldpar.params().startOfAppendix();
|
||||
plist.erase(lyx::next(plist.begin(), old.pit()));
|
||||
// do not lose start of appendix marker (bug 4212)
|
||||
if (soa && old.pit() < pit_type(plist.size()))
|
||||
plist[old.pit()].params().startOfAppendix(true);
|
||||
// Delete old par.
|
||||
old.recordUndo(max(old.pit() - 1, pit_type(0)),
|
||||
min(old.pit() + 1, old.lastpit()));
|
||||
ParagraphList & plist = old.text()->paragraphs();
|
||||
bool const soa = oldpar.params().startOfAppendix();
|
||||
plist.erase(lyx::next(plist.begin(), old.pit()));
|
||||
// do not lose start of appendix marker (bug 4212)
|
||||
if (soa && old.pit() < pit_type(plist.size()))
|
||||
plist[old.pit()].params().startOfAppendix(true);
|
||||
|
||||
// see #warning (FIXME?) above
|
||||
if (cur.depth() >= old.depth()) {
|
||||
CursorSlice & curslice = cur[old.depth() - 1];
|
||||
if (&curslice.inset() == &old.inset()
|
||||
&& curslice.pit() > old.pit()) {
|
||||
--curslice.pit();
|
||||
// since a paragraph has been deleted, all the
|
||||
// insets after `old' have been copied and
|
||||
// their address has changed. Therefore we
|
||||
// need to `regenerate' cur. (JMarc)
|
||||
cur.updateInsets(&(cur.bottom().inset()));
|
||||
need_anchor_change = true;
|
||||
}
|
||||
// see #warning (FIXME?) above
|
||||
if (cur.depth() >= old.depth()) {
|
||||
CursorSlice & curslice = cur[old.depth() - 1];
|
||||
if (&curslice.inset() == &old.inset()
|
||||
&& curslice.pit() > old.pit()) {
|
||||
--curslice.pit();
|
||||
// since a paragraph has been deleted, all the
|
||||
// insets after `old' have been copied and
|
||||
// their address has changed. Therefore we
|
||||
// need to `regenerate' cur. (JMarc)
|
||||
cur.updateInsets(&(cur.bottom().inset()));
|
||||
need_anchor_change = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user