From 3df011bad58db02aba3d0ba41f0d43d6743fb967 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Fri, 19 May 2023 20:39:32 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/5066 addFloatLayer --- app/src/block/Panel.ts | 4 ++-- app/src/block/popover.ts | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/block/Panel.ts b/app/src/block/Panel.ts index e9d71341e..53404b43f 100644 --- a/app/src/block/Panel.ts +++ b/app/src/block/Panel.ts @@ -20,8 +20,8 @@ export class BlockPanel { public defIds: string[] = []; public id: string; private app: App; - private x: number; - private y: number; + public x: number; + public y: number; private isBacklink: boolean; public editors: Protyle[] = []; diff --git a/app/src/block/popover.ts b/app/src/block/popover.ts index 6fa13795c..e16108489 100644 --- a/app/src/block/popover.ts +++ b/app/src/block/popover.ts @@ -111,7 +111,7 @@ const hidePopover = (event: MouseEvent & { target: HTMLElement, path: HTMLElemen const blockElement = hasClosestByClassName(targetElement, "block__popover", true); const maxEditLevels: { [key: string]: number } = {oid: 0}; window.siyuan.blockPanels.forEach((item) => { - if (item.targetElement && item.element.getAttribute("data-pin") === "true") { + if ((item.targetElement || typeof item.x === "number") && item.element.getAttribute("data-pin") === "true") { const level = parseInt(item.element.getAttribute("data-level")); const oid = item.element.getAttribute("data-oid"); if (maxEditLevels[oid]) { @@ -126,7 +126,7 @@ const hidePopover = (event: MouseEvent & { target: HTMLElement, path: HTMLElemen if (blockElement) { for (let i = 0; i < window.siyuan.blockPanels.length; i++) { const item = window.siyuan.blockPanels[i]; - if (item.targetElement && + if ((item.targetElement || typeof item.x === "number") && parseInt(item.element.getAttribute("data-level")) > (maxEditLevels[item.element.getAttribute("data-oid")] || 0) && item.element.getAttribute("data-pin") === "false" && parseInt(item.element.getAttribute("data-level")) > parseInt(blockElement.getAttribute("data-level"))) { @@ -137,7 +137,7 @@ const hidePopover = (event: MouseEvent & { target: HTMLElement, path: HTMLElemen } else { for (let i = 0; i < window.siyuan.blockPanels.length; i++) { const item = window.siyuan.blockPanels[i]; - if (item.targetElement && item.element.getAttribute("data-pin") === "false" && + if ((item.targetElement || typeof item.x === "number") && item.element.getAttribute("data-pin") === "false" && parseInt(item.element.getAttribute("data-level")) > (maxEditLevels[item.element.getAttribute("data-oid")] || 0)) { item.destroy(); i--; @@ -232,7 +232,7 @@ export const showPopover = async (app: App, showRef = false) => { let hasPin = false; window.siyuan.blockPanels.find((item) => { - if (item.targetElement && item.element.getAttribute("data-pin") === "true" + if ((item.targetElement || typeof item.x === "number") && item.element.getAttribute("data-pin") === "true" && JSON.stringify(ids) === JSON.stringify(item.nodeIds)) { hasPin = true; return true;