From c43869e612f490c296315156dabbc8b2fdb0693e Mon Sep 17 00:00:00 2001 From: Vanessa Date: Fri, 18 Apr 2025 09:57:06 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/14638 --- app/src/protyle/wysiwyg/keydown.ts | 49 +++++++++++++++--------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/app/src/protyle/wysiwyg/keydown.ts b/app/src/protyle/wysiwyg/keydown.ts index 25de57fd8..a31442211 100644 --- a/app/src/protyle/wysiwyg/keydown.ts +++ b/app/src/protyle/wysiwyg/keydown.ts @@ -329,30 +329,6 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => { return; } - if (event.shiftKey && (event.key === "ArrowLeft" || event.key === "ArrowRight")) { - const selectElements = protyle.wysiwyg.element.querySelectorAll(".protyle-wysiwyg--select"); - if (selectElements.length > 0) { - event.stopPropagation(); - event.preventDefault(); - return; - } - - if (!range.toString()) { - if (event.key === "ArrowRight" && isEndOfBlock(range)) { - event.preventDefault(); - event.stopPropagation(); - return; - } - const nodeEditableElement = getContenteditableElement(nodeElement); - const position = getSelectionOffset(nodeEditableElement, protyle.wysiwyg.element, range); - if (position.start === 0 && event.key === "ArrowLeft") { - event.preventDefault(); - event.stopPropagation(); - return; - } - } - } - if (matchHotKey(window.siyuan.config.keymap.editor.general.expandUp.custom, event)) { upSelect({ protyle, event, nodeElement, editorElement, range, @@ -1945,6 +1921,31 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => { return; } + // 和自定义 alt+shift+左/右 冲突,降低优先级 https://github.com/siyuan-note/siyuan/issues/14638 + if (event.shiftKey && (event.key === "ArrowLeft" || event.key === "ArrowRight")) { + const selectElements = protyle.wysiwyg.element.querySelectorAll(".protyle-wysiwyg--select"); + if (selectElements.length > 0) { + event.stopPropagation(); + event.preventDefault(); + return; + } + + if (!range.toString()) { + if (event.key === "ArrowRight" && isEndOfBlock(range)) { + event.preventDefault(); + event.stopPropagation(); + return; + } + const nodeEditableElement = getContenteditableElement(nodeElement); + const position = getSelectionOffset(nodeEditableElement, protyle.wysiwyg.element, range); + if (position.start === 0 && event.key === "ArrowLeft") { + event.preventDefault(); + event.stopPropagation(); + return; + } + } + } + // 置于最后,太多快捷键会使用到选中元素 if (isNotCtrl(event) && event.key !== "Backspace" && event.key !== "Escape" && event.key !== "Delete" && !event.shiftKey && !event.altKey && event.key !== "Enter") { hideElements(["select"], protyle);