]> git.lyx.org Git - lyx.git/blobdiff - src/Text2.cpp
Amend 76cdca64223f
[lyx.git] / src / Text2.cpp
index b917dba2122d2c02f9d1b32129f45fc08daffb64..ed4b133ff53f4fc34fe994bf16264615979815e0 100644 (file)
@@ -182,10 +182,16 @@ void Text::setLayout(pit_type start, pit_type end,
 
        for (pit_type pit = start; pit != end; ++pit) {
                Paragraph & par = pars_[pit];
-               par.applyLayout(lyxlayout);
+               // Is this a separating paragraph? If so,
+               // this needs to be standard layout
+               bool const is_separator = par.size() == 1
+                               && par.isEnvSeparator(0);
+               par.applyLayout(is_separator ? bp.documentClass().defaultLayout() : lyxlayout);
                if (lyxlayout.margintype == MARGIN_MANUAL)
                        par.setLabelWidthString(par.expandLabel(lyxlayout, bp));
        }
+
+       deleteEmptyParagraphMechanism(start, end - 1, bp.track_changes);
 }
 
 
@@ -198,6 +204,7 @@ void Text::setLayout(Cursor & cur, docstring const & layout)
        pit_type end = cur.selEnd().pit() + 1;
        cur.recordUndoSelection();
        setLayout(start, end, layout);
+       cur.fixIfBroken();
        cur.setCurrentFont();
        cur.forceBufferUpdate();
 }
@@ -480,7 +487,7 @@ void Text::setLabelWidthStringToSequence(Cursor const & cur,
 }
 
 
-void Text::setParagraphs(Cursor & cur, docstring arg, bool merge)
+void Text::setParagraphs(Cursor & cur, docstring const & arg, bool merge)
 {
        LBUFERR(cur.text());
 
@@ -600,7 +607,7 @@ bool Text::checkAndActivateInsetVisual(Cursor & cur, bool movingForward, bool mo
        if (cur.pos() == cur.lastpos())
                return false;
        Paragraph & par = cur.paragraph();
-       Inset * inset = par.isInset(cur.pos()) ? par.getInset(cur.pos()) : 0;
+       Inset * inset = par.isInset(cur.pos()) ? par.getInset(cur.pos()) : nullptr;
        if (!inset || !inset->editable())
                return false;
        if (cur.selection() && cur.realAnchor().find(inset) == -1)
@@ -914,7 +921,7 @@ bool Text::deleteEmptyParagraphMechanism(Cursor & cur,
                       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()));
+       plist.erase(plist.iterator_at(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);
@@ -986,7 +993,7 @@ void Text::deleteEmptyParagraphMechanism(pit_type first, pit_type last, bool tra
                        continue;
 
                if (par.empty() || (par.size() == 1 && par.isLineSeparator(0))) {
-                       pars_.erase(lyx::next(pars_.begin(), pit));
+                       pars_.erase(pars_.iterator_at(pit));
                        --pit;
                        --last;
                        continue;