diff --git a/app/src/protyle/wysiwyg/remove.ts b/app/src/protyle/wysiwyg/remove.ts index 8e52cd8d7..3e23cda1d 100644 --- a/app/src/protyle/wysiwyg/remove.ts +++ b/app/src/protyle/wysiwyg/remove.ts @@ -1,4 +1,4 @@ -import {focusBlock, focusByWbr} from "../util/selection"; +import {focusBlock, focusByRange, focusByWbr, setLastNodeRange} from "../util/selection"; import { getContenteditableElement, getLastBlock, @@ -119,18 +119,21 @@ const removeLi = (protyle: IProtyle, blockElement: Element, range: Range) => { }]; const previousLastElement = listItemElement.previousElementSibling.lastElementChild; if (listItemElement.previousElementSibling.getAttribute("fold") === "1") { - if (getContenteditableElement(blockElement).textContent.trim() === "") { + if (getContenteditableElement(blockElement).textContent.trim() === "" && + blockElement.nextElementSibling.classList.contains("protyle-attr")) { doOperations.push({ action: "delete", id: listItemId }); undoOperations[0].data = listItemElement.outerHTML; - range.selectNodeContents(getContenteditableElement(listItemElement.previousElementSibling)); - range.collapse(false); + setLastNodeRange(getContenteditableElement(listItemElement.previousElementSibling), range); + range.collapse(true); listItemElement.remove(); } else { - range.selectNodeContents(getContenteditableElement(listItemElement.previousElementSibling)); - range.collapse(false); + setLastNodeRange(getContenteditableElement(listItemElement.previousElementSibling), range); + range.collapse(true); + focusByRange(range); + blockElement.querySelector("wbr")?.remove(); return; } } else {