From 0ba7a474723aa55027aa7b8413459bfcabf332f3 Mon Sep 17 00:00:00 2001 From: Jeffrey Chen <78434827+TCOTC@users.noreply.github.com> Date: Thu, 6 Feb 2025 10:27:39 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=80=89=E4=B8=AD=E5=9D=97=E4=B9=8B?= =?UTF-8?q?=E5=90=8E=E6=97=A0=E6=B3=95=E9=80=9A=E8=BF=87=E5=BF=AB=E6=8D=B7?= =?UTF-8?q?=E9=94=AE=E5=A4=8D=E5=88=B6=E5=9D=97=E5=BC=95=E7=94=A8=20(#1398?= =?UTF-8?q?0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 选中块之后无法通过快捷键复制块引用 fix https://github.com/siyuan-note/siyuan/issues/13956 - 如果焦点不在编辑器内,按快捷键后无法访问startContainer,会报错 - 优先获取选中块的块引用,其次获取选中文本的块引用 * fix: 移除多余的条件判断,选中块按下快捷键后块高亮不应该移动 fix https://github.com/siyuan-note/siyuan/issues/8918 --- app/src/boot/globalEvent/keydown.ts | 15 ++++++++------- app/src/protyle/wysiwyg/index.ts | 5 ++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/src/boot/globalEvent/keydown.ts b/app/src/boot/globalEvent/keydown.ts index fe9acb3ef..fec1306fc 100644 --- a/app/src/boot/globalEvent/keydown.ts +++ b/app/src/boot/globalEvent/keydown.ts @@ -507,10 +507,10 @@ const editKeydown = (app: App, event: KeyboardEvent) => { if (!isFileFocus && matchHotKey(window.siyuan.config.keymap.editor.general.copyBlockRef.custom, event)) { event.preventDefault(); event.stopPropagation(); - if (hasClosestByClassName(range.startContainer, "protyle-title")) { + if (hasClosestByClassName(range?.startContainer, "protyle-title")) { copyTextByType([protyle.block.rootID], "ref"); } else { - const nodeElement = hasClosestBlock(range.startContainer); + const nodeElement = hasClosestBlock(range?.startContainer); if (!nodeElement) { return false; } @@ -519,16 +519,17 @@ const editKeydown = (app: App, event: KeyboardEvent) => { copyPNGByLink(selectImgElement.querySelector("img").getAttribute("src")); return true; } + const selectBlocks = protyle.wysiwyg.element.querySelectorAll(".protyle-wysiwyg--select"); + if (selectBlocks.length !== 0) { + copyTextByType(Array.from(selectBlocks).map(item => item.getAttribute("data-node-id")), "ref"); + return true; + } if (range.toString() !== "") { getContentByInlineHTML(range, (content) => { writeText(`((${nodeElement.getAttribute("data-node-id")} "${content.trim()}"))`); }); } else { - const ids = Array.from(protyle.wysiwyg.element.querySelectorAll(".protyle-wysiwyg--select")).map(item => item.getAttribute("data-node-id")); - if (ids.length === 0) { - ids.push(nodeElement.getAttribute("data-node-id")); - } - copyTextByType(ids, "ref"); + copyTextByType([nodeElement.getAttribute("data-node-id")], "ref"); } } return true; diff --git a/app/src/protyle/wysiwyg/index.ts b/app/src/protyle/wysiwyg/index.ts index 932b921d2..38ed4fdc3 100644 --- a/app/src/protyle/wysiwyg/index.ts +++ b/app/src/protyle/wysiwyg/index.ts @@ -2157,9 +2157,8 @@ export class WYSIWYG { event.stopPropagation(); } - // https://github.com/siyuan-note/siyuan/issues/8918 - if ((event.key === "ArrowLeft" || event.key === "ArrowRight" || - event.key === "Alt" || event.key === "Shift") && // 选中后 alt+shift+arrowRight 会导致光标和选中块不一致 + // 按下方向键后块高亮跟随光标移动 https://github.com/siyuan-note/siyuan/issues/8918 + if ((event.key === "ArrowLeft" || event.key === "ArrowRight") && nodeElement && !nodeElement.classList.contains("protyle-wysiwyg--select")) { const selectElements = Array.from(protyle.wysiwyg.element.querySelectorAll(".protyle-wysiwyg--select")); let containRange = false;