]> git.lyx.org Git - features.git/commitdiff
inset-split: consider that freeSpacing() doesn't DEPM
authorJuergen Spitzmueller <spitz@lyx.org>
Sun, 27 Dec 2020 13:28:03 +0000 (14:28 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Sun, 27 Dec 2020 13:28:03 +0000 (14:28 +0100)
src/Text.cpp

index 1f8288a71dbe985a8c05a263d2e74098835fe2b1..8435b73972f6bf0de32b40765e5df207c1a1f6d1 100644 (file)
@@ -1950,10 +1950,13 @@ bool Text::splitInset(Cursor & cur)
                cur.setMark(false);
                cur.selHandle(false);
                cur.resetAnchor();
-               Cursor dummy = cur;
-               dummy.pos() = dummy.pit() = 0;
-               if (cur.bv().checkDepm(dummy, cur))
+               bool atlastpos;
+               if (cur.pos() == 0 && cur.pit() > 0) {
+                       // if we are at par start, remove this par
+                       cur.text()->backspace(cur);
                        cur.forceBufferUpdate();
+               } else if (cur.pos() == cur.lastpos())
+                       atlastpos = true;
                // Move out of and jump over inset
                cur.popBackward();
                ++cur.pos();
@@ -1966,6 +1969,11 @@ bool Text::splitInset(Cursor & cur)
                cutSelection(cur, false);
                cap::pasteFromTemp(cur, cur.buffer()->errorList("Paste"));
                cur.text()->setCursor(cur, 0, 0);
+               if (atlastpos && cur.paragraph().isFreeSpacing() && cur.paragraph().empty()) {
+                       // We started from par end, remove extra empty par in free spacing insets
+                       cur.text()->erase(cur);
+                       cur.forceBufferUpdate();
+               }
        }
 
        cur.finishUndo();