From 90f1798dffc3bbffc07e78536b1d6e570a5399b1 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Thu, 7 Sep 2023 17:14:31 +0800 Subject: [PATCH] :bug: https://github.com/siyuan-note/siyuan/issues/9126 --- app/src/boot/globalEvent/event.ts | 6 ++---- app/src/boot/globalEvent/keydown.ts | 11 ++++++----- app/src/boot/globalEvent/keyup.ts | 9 ++++++--- app/src/boot/globalEvent/mousemove.ts | 2 +- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/app/src/boot/globalEvent/event.ts b/app/src/boot/globalEvent/event.ts index 963fddca1..dc98d4aaa 100644 --- a/app/src/boot/globalEvent/event.ts +++ b/app/src/boot/globalEvent/event.ts @@ -47,14 +47,12 @@ export const initWindowEvent = (app: App) => { } }); - let switchDialog: Dialog; - window.addEventListener("keyup", (event) => { - windowKeyUp(app, event, switchDialog); + windowKeyUp(app, event); }); window.addEventListener("keydown", (event) => { - windowKeyDown(app, event, switchDialog); + windowKeyDown(app, event); }); window.addEventListener("blur", () => { diff --git a/app/src/boot/globalEvent/keydown.ts b/app/src/boot/globalEvent/keydown.ts index 05a630f6e..ba5e096af 100644 --- a/app/src/boot/globalEvent/keydown.ts +++ b/app/src/boot/globalEvent/keydown.ts @@ -57,7 +57,7 @@ import {commandPanel} from "../../plugin/commandPanel"; import {toggleDockBar} from "../../layout/dock/util"; import {workspaceMenu} from "../../menus/workspace"; -const switchDialogEvent = (app: App, event: MouseEvent, switchDialog: Dialog) => { +const switchDialogEvent = (app: App, event: MouseEvent) => { event.preventDefault(); let target = event.target as HTMLElement; while (!target.isSameNode(switchDialog.element)) { @@ -815,8 +815,8 @@ const panelTreeKeydown = (app: App, event: KeyboardEvent) => { return false; }; -export const windowKeyDown = (app: App, event: KeyboardEvent, switchDialog: Dialog) => { - +let switchDialog: Dialog +export const windowKeyDown = (app: App, event: KeyboardEvent) => { if (document.querySelector(".av__mask") || document.getElementById("errorLog") || event.isComposing) { return; } @@ -942,15 +942,16 @@ export const windowKeyDown = (app: App, event: KeyboardEvent, switchDialog: Dial
`, }); + switchDialog.element.setAttribute("data-key", "⌃⇥"); // 需移走光标,否则编辑器会继续监听并执行按键操作 switchDialog.element.querySelector("input").focus(); if (isMac()) { switchDialog.element.addEventListener("contextmenu", (event) => { - switchDialogEvent(app, event, switchDialog); + switchDialogEvent(app, event); }); } switchDialog.element.addEventListener("click", (event) => { - switchDialogEvent(app, event, switchDialog); + switchDialogEvent(app, event); }); return; } diff --git a/app/src/boot/globalEvent/keyup.ts b/app/src/boot/globalEvent/keyup.ts index 5eb5a021a..ad51fe448 100644 --- a/app/src/boot/globalEvent/keyup.ts +++ b/app/src/boot/globalEvent/keyup.ts @@ -1,4 +1,3 @@ -import {Dialog} from "../../dialog"; import {fetchPost} from "../../util/fetch"; import {escapeHtml} from "../../util/escape"; import {openCard} from "../../card/openCard"; @@ -6,10 +5,15 @@ import {getDockByType} from "../../layout/util"; import {getAllTabs} from "../../layout/getAll"; import {App} from "../../index"; -export const windowKeyUp = (app: App,event:KeyboardEvent, switchDialog:Dialog) => { +export const windowKeyUp = (app: App,event:KeyboardEvent) => { window.siyuan.ctrlIsPressed = false; window.siyuan.shiftIsPressed = false; window.siyuan.altIsPressed = false; + const switchDialog = window.siyuan.dialogs.find(item => { + if (item.element.getAttribute("data-key") === "⌃⇥") { + return true; + } + }); if (switchDialog && switchDialog.element.parentElement) { if (event.key === "Tab") { let currentLiElement = switchDialog.element.querySelector(".b3-list-item--focus"); @@ -112,7 +116,6 @@ export const windowKeyUp = (app: App,event:KeyboardEvent, switchDialog:Dialog) }); } switchDialog.destroy(); - switchDialog = undefined; } } }; diff --git a/app/src/boot/globalEvent/mousemove.ts b/app/src/boot/globalEvent/mousemove.ts index 0630129dc..16919577e 100644 --- a/app/src/boot/globalEvent/mousemove.ts +++ b/app/src/boot/globalEvent/mousemove.ts @@ -14,7 +14,7 @@ const getRightBlock = (element: HTMLElement, x: number, y: number) => { return nodeElement; }; -export const windowMouseMove = (event: MouseEvent & { target: HTMLElement }, mouseIsEnter:boolean) => { +export const windowMouseMove = (event: MouseEvent & { target: HTMLElement }, mouseIsEnter: boolean) => { if (document.body.classList.contains("body--blur")) { // 非激活状态下不执行 https://ld246.com/article/1693474547631 return;