From c2e9e7ed6f1f52a11904159f2ad8e9562a116eb8 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Sun, 25 Sep 2022 09:53:53 +0800 Subject: [PATCH] :art: fix https://github.com/siyuan-note/siyuan/issues/5948 --- app/src/protyle/util/selection.ts | 12 ++++++++---- app/src/protyle/wysiwyg/enter.ts | 3 ++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/src/protyle/util/selection.ts b/app/src/protyle/util/selection.ts index 878ccbdfd..e38135986 100644 --- a/app/src/protyle/util/selection.ts +++ b/app/src/protyle/util/selection.ts @@ -303,15 +303,19 @@ export const setFirstNodeRange = (editElement: Element, range: Range) => { if (!editElement) { return range; } - let firstChild = editElement.firstChild; - while (firstChild && firstChild.nodeType !== 3) { - firstChild = firstChild.firstChild; + let firstChild = editElement.firstChild as HTMLElement; + while (firstChild && firstChild.nodeType !== 3 && !firstChild.classList.contains("render-node")) { + firstChild = firstChild.firstChild as HTMLElement; } if (!firstChild) { range.selectNodeContents(editElement); return range; } - range.setStart(firstChild, 0); + if (firstChild.classList.contains("render-node")) { + range.setStartBefore(firstChild); + } else { + range.setStart(firstChild, 0); + } return range; }; diff --git a/app/src/protyle/wysiwyg/enter.ts b/app/src/protyle/wysiwyg/enter.ts index 90ad12ebf..c6ce67a7d 100644 --- a/app/src/protyle/wysiwyg/enter.ts +++ b/app/src/protyle/wysiwyg/enter.ts @@ -300,7 +300,8 @@ export const enter = (blockElement: HTMLElement, range: Range, protyle: IProtyle } // bq - if (editableElement.textContent === "" && blockElement.nextElementSibling && blockElement.nextElementSibling.classList.contains("protyle-attr") && blockElement.parentElement.getAttribute("data-type") === "NodeBlockquote") { + if (editableElement.textContent.replace(Constants.ZWSP, "").replace("\n", "") === "" && + blockElement.nextElementSibling && blockElement.nextElementSibling.classList.contains("protyle-attr") && blockElement.parentElement.getAttribute("data-type") === "NodeBlockquote") { range.insertNode(document.createElement("wbr")); const topElement = getTopEmptyElement(blockElement); const blockId = blockElement.getAttribute("data-node-id");