diff --git a/app/src/layout/Wnd.ts b/app/src/layout/Wnd.ts index cbaf2b2c6..8d717bb79 100644 --- a/app/src/layout/Wnd.ts +++ b/app/src/layout/Wnd.ts @@ -322,8 +322,9 @@ export class Wnd { } saveLayout(); }); - + let elementDragCounter = 0; this.element.addEventListener("dragenter", (event: DragEvent & { target: HTMLElement }) => { + elementDragCounter++ if (event.dataTransfer.types.includes(Constants.SIYUAN_DROP_TAB)) { const tabHeadersElement = hasClosestByClassName(event.target, "layout-tab-bar"); if (tabHeadersElement) { @@ -336,6 +337,14 @@ export class Wnd { } } }); + // dragElement dragleave 后还会触发 dragenter https://github.com/siyuan-note/siyuan/issues/13753 + this.element.addEventListener("dragleave", (event: DragEvent & { target: HTMLElement }) => { + elementDragCounter-- + if (elementDragCounter === 0) { + dragElement.classList.add("fn__none"); + dragElement.removeAttribute("style"); + } + }) dragElement.addEventListener("dragover", (event: DragEvent & { layerX: number, layerY: number }) => { document.querySelectorAll(".layout-tab-bars--drag").forEach(item => { @@ -352,6 +361,7 @@ export class Wnd { dragElement.classList.add("fn__none"); dragElement.removeAttribute("style"); }); + dragElement.addEventListener("drop", (event: DragEvent & { target: HTMLElement }) => { dragElement.classList.add("fn__none"); const targetWndElement = event.target.parentElement.parentElement;