From 3e12c8761a14699fb5e230c94080b287e19cf0ad Mon Sep 17 00:00:00 2001 From: Vanessa Date: Thu, 29 May 2025 11:53:23 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/14743 --- app/src/protyle/wysiwyg/keydown.ts | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/app/src/protyle/wysiwyg/keydown.ts b/app/src/protyle/wysiwyg/keydown.ts index f99788eea..775eacf09 100644 --- a/app/src/protyle/wysiwyg/keydown.ts +++ b/app/src/protyle/wysiwyg/keydown.ts @@ -8,13 +8,15 @@ import { getSelectionOffset, getSelectionPosition, selectAll, - setFirstNodeRange, setInsertWbrHTML, + setFirstNodeRange, + setInsertWbrHTML, setLastNodeRange, } from "../util/selection"; import { hasClosestBlock, hasClosestByAttribute, - hasClosestByClassName, hasClosestByTag, + hasClosestByClassName, + hasClosestByTag, hasTopClosestByAttribute, isInEmbedBlock } from "../util/hasClosest"; @@ -27,7 +29,8 @@ import { getPreviousBlock, getTopAloneElement, hasNextSibling, - hasPreviousSibling, isEndOfBlock, + hasPreviousSibling, + isEndOfBlock, isNotEditBlock, } from "./getBlock"; import {isIncludesHotKey, matchHotKey} from "../util/hotKey"; @@ -285,8 +288,14 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => { event.key !== "Enter" && event.key !== "Tab" && event.key !== "Backspace" && event.key !== "Delete" && event.key !== "ContextMenu") { event.stopPropagation(); hideElements(["select"], protyle); + // https://github.com/siyuan-note/siyuan/issues/14743 + if (nodeElement && getContenteditableElement(nodeElement) && + range.endContainer.nodeType === 1 && (range.endContainer as HTMLElement).classList.contains("protyle-attr")) { + range.collapse(true); + } return false; } + if (matchHotKey(window.siyuan.config.keymap.editor.general.collapse.custom, event) && !event.repeat) { const selectElements = protyle.wysiwyg.element.querySelectorAll(".protyle-wysiwyg--select"); if (selectElements.length > 0) { @@ -2024,11 +2033,5 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => { event.stopPropagation(); return; } - - // https://github.com/siyuan-note/siyuan/issues/14743 - if (nodeElement && getContenteditableElement(nodeElement) && - range.endContainer.nodeType === 1 && (range.endContainer as HTMLElement).classList.contains("protyle-attr")) { - range.collapse(true); - } }); };