From c248faed49b0814f736ca116e459803878ea790d Mon Sep 17 00:00:00 2001 From: Vanessa Date: Mon, 20 Feb 2023 09:16:54 +0800 Subject: [PATCH] :bug: fix https://github.com/siyuan-note/siyuan/issues/7401 --- app/src/protyle/gutter/index.ts | 10 ++++------ app/src/protyle/util/editorCommonEvent.ts | 18 ++++++++++++++---- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app/src/protyle/gutter/index.ts b/app/src/protyle/gutter/index.ts index f40040d38..fd45a201c 100644 --- a/app/src/protyle/gutter/index.ts +++ b/app/src/protyle/gutter/index.ts @@ -62,12 +62,10 @@ export class Gutter { protyle.wysiwyg.element.innerHTML); }); this.element.addEventListener("dragend", () => { - if (window.siyuan.dragElement) { - this.element.querySelectorAll("button").forEach((item) => { - item.style.opacity = ""; - }); - window.siyuan.dragElement = undefined; - } + this.element.querySelectorAll("button").forEach((item) => { + item.style.opacity = ""; + }); + window.siyuan.dragElement = undefined; }); this.element.addEventListener("click", (event: MouseEvent & { target: HTMLInputElement }) => { const buttonElement = hasClosestByTag(event.target, "BUTTON"); diff --git a/app/src/protyle/util/editorCommonEvent.ts b/app/src/protyle/util/editorCommonEvent.ts index 7d201910c..87b08103d 100644 --- a/app/src/protyle/util/editorCommonEvent.ts +++ b/app/src/protyle/util/editorCommonEvent.ts @@ -758,7 +758,7 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => { } else if (targetElement) { let queryClass = ""; selectedIds.forEach(item => { - queryClass = `[data-node-id="${item}"],`; + queryClass += `[data-node-id="${item}"],`; }); if (window.siyuan.dragElement) { window.siyuan.dragElement.querySelectorAll(queryClass.substring(0, queryClass.length - 1)).forEach(elementItem => { @@ -970,9 +970,19 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => { editorElement.addEventListener("dragleave", (event: DragEvent & { target: HTMLElement }) => { const nodeElement = hasClosestBlock(event.target); if (nodeElement) { - nodeElement.removeAttribute("select-start"); - nodeElement.removeAttribute("select-end"); - nodeElement.classList.remove("protyle-wysiwyg--select", "dragover__top", "dragover__bottom", "dragover__left", "dragover__right"); + let gutterType = ""; + for (const item of event.dataTransfer.items) { + if (item.type.startsWith(Constants.SIYUAN_DROP_GUTTER)) { + gutterType = item.type; + } + } + if (gutterType.indexOf(nodeElement.getAttribute("data-node-id")) === -1) { + // 选中的元素不应移除,否则拖拽 gutter 经过选中的元素,该元素就会被取消选中 + nodeElement.classList.remove("protyle-wysiwyg--select"); + nodeElement.removeAttribute("select-start"); + nodeElement.removeAttribute("select-end"); + } + nodeElement.classList.remove("dragover__top", "dragover__bottom", "dragover__left", "dragover__right"); } }); };