diff --git a/app/src/protyle/gutter/index.ts b/app/src/protyle/gutter/index.ts index ea370232c..e1eb16518 100644 --- a/app/src/protyle/gutter/index.ts +++ b/app/src/protyle/gutter/index.ts @@ -75,7 +75,7 @@ export class Gutter { hideTooltip(); window.siyuan.menus.menu.remove(); const buttonElement = event.target.parentElement; - const selectIds: string[] = []; + let selectIds: string[] = []; let selectElements: Element[] = []; let avElement: Element; if (buttonElement.dataset.rowId) { @@ -90,11 +90,27 @@ export class Gutter { selectElements.push(item); }); } else { - protyle.wysiwyg.element.querySelector(`[data-node-id="${buttonElement.getAttribute("data-node-id")}"]`)?.classList.add("protyle-wysiwyg--select"); + const gutterId = buttonElement.getAttribute("data-node-id") selectElements = Array.from(protyle.wysiwyg.element.querySelectorAll(".protyle-wysiwyg--select")); - selectElements.forEach(item => { - selectIds.push(item.getAttribute("data-node-id")); - }); + let selectedIncludeGutter = false; + selectElements.forEach((item => { + const itemId = item.getAttribute("data-node-id") + if (itemId === gutterId) { + selectedIncludeGutter = true + } + selectIds.push(itemId); + })) + if (!selectedIncludeGutter) { + const gutterNodeElement = protyle.wysiwyg.element.querySelector(`[data-node-id="${gutterId}"]`) + if (gutterNodeElement) { + selectElements.forEach((item => { + item.classList.remove("protyle-wysiwyg--select") + })); + gutterNodeElement.classList.add("protyle-wysiwyg--select") + selectElements = [gutterNodeElement] + selectIds = [gutterId]; + } + } } const ghostElement = document.createElement("div");