From 44d3db32e6123eda102c90e6577ebf75311c610f Mon Sep 17 00:00:00 2001 From: Vanessa Date: Thu, 30 Nov 2023 21:21:43 +0800 Subject: [PATCH] :art: fix https://github.com/siyuan-note/siyuan/issues/9793 --- app/src/boot/globalEvent/click.ts | 12 ++++++++++++ app/src/boot/globalEvent/mousemove.ts | 5 +---- app/src/layout/dock/index.ts | 21 +++++++++++++++++++++ 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/app/src/boot/globalEvent/click.ts b/app/src/boot/globalEvent/click.ts index 5ee68a8db..3a51e10a3 100644 --- a/app/src/boot/globalEvent/click.ts +++ b/app/src/boot/globalEvent/click.ts @@ -21,6 +21,18 @@ export const globalClick = (event: MouseEvent & { target: HTMLElement }) => { if (!hasClosestByClassName(event.target, "pdf__outer")) { hideAllElements(["pdfutil"]); } + // dock float 时,点击空白处,隐藏 dock。场景:文档树上重命名后 + if (!isWindow() && window.siyuan.layout.leftDock && + !hasClosestByClassName(event.target, "b3-dialog--open", true) && + !hasClosestByClassName(event.target, "b3-menu") && + !hasClosestByClassName(event.target, "block__popover") && + !hasClosestByClassName(event.target, "dock") && + !hasClosestByClassName(event.target, "layout--float", true) + ) { + window.siyuan.layout.bottomDock.hideDock(); + window.siyuan.layout.leftDock.hideDock(); + window.siyuan.layout.rightDock.hideDock(); + } const copyElement = hasTopClosestByClassName(event.target, "protyle-action__copy"); if (copyElement) { diff --git a/app/src/boot/globalEvent/mousemove.ts b/app/src/boot/globalEvent/mousemove.ts index f00a99222..2523d1bc4 100644 --- a/app/src/boot/globalEvent/mousemove.ts +++ b/app/src/boot/globalEvent/mousemove.ts @@ -47,10 +47,7 @@ export const windowMouseMove = (event: MouseEvent & { target: HTMLElement }, mou if (!mouseIsEnter && event.buttons === 0 && // 鼠标按键被按下时不触发 window.siyuan.layout.bottomDock && - !isWindow() && - !hasClosestByClassName(event.target, "b3-dialog", true) && - !hasClosestByClassName(event.target, "block__popover", true) && - !hasClosestByClassName(event.target, "b3-menu")) { + !isWindow()) { if (event.clientX < 43) { if (!window.siyuan.layout.leftDock.pin && window.siyuan.layout.leftDock.layout.element.clientWidth > 0 && // 隐藏停靠栏会导致点击两侧内容触发浮动面板弹出,因此需减小鼠标范围 diff --git a/app/src/layout/dock/index.ts b/app/src/layout/dock/index.ts index d08b188de..7feae10f5 100644 --- a/app/src/layout/dock/index.ts +++ b/app/src/layout/dock/index.ts @@ -256,6 +256,18 @@ export class Dock { this.layout.element.clientHeight === 0 && this.layout.element.style.height.startsWith("0")) { return; } + if (( + document.querySelector(".b3-dialog") || + document.querySelector(".block__popover") || + document.querySelector("#commonMenu:not(.fn__none)") + ) && ( + window.siyuan.layout.leftDock?.layout.element.style.opacity === "1" || + window.siyuan.layout.rightDock?.layout.element.style.opacity === "1" || + window.siyuan.layout.bottomDock?.layout.element.style.opacity === "1" + )) { + return; + } + if (!reset) { this.layout.element.style.opacity = "1"; } @@ -280,6 +292,15 @@ export class Dock { if (document.activeElement && this.layout.element.contains(document.activeElement) && document.activeElement.classList.contains("b3-text-field")) { return; } + const dialogElement = document.querySelector(".b3-dialog") as HTMLElement + const blockElement = document.querySelector(".block__popover") as HTMLElement + const menuElement = document.querySelector("#commonMenu:not(.fn__none)") as HTMLElement + if ((dialogElement && dialogElement.style.zIndex > this.layout.element.style.zIndex) || // 文档树上修改 emoji 时 + (blockElement && blockElement.style.zIndex > this.layout.element.style.zIndex) || // 文档树上弹出悬浮层 + (menuElement && menuElement.style.zIndex > this.layout.element.style.zIndex) // 面板上弹出菜单时 + ) { + return; + } if (this.position === "Left") { this.layout.element.style.transform = `translateX(-${this.layout.element.clientWidth + 8}px)`; this.layout.element.style.left = "";