From ad1bce5fe15d9cc58cb3d1557e530d74aa18bf19 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Thu, 11 Dec 2025 12:46:47 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/16051 11 --- .../assets/scss/component/_typography.scss | 2 +- app/src/boot/globalEvent/mousemove.ts | 18 +++++++----------- app/src/protyle/gutter/index.ts | 19 ++++++++++++------- app/src/protyle/ui/initUI.ts | 4 ++-- 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/app/src/assets/scss/component/_typography.scss b/app/src/assets/scss/component/_typography.scss index e045b1974..4f9149c85 100644 --- a/app/src/assets/scss/component/_typography.scss +++ b/app/src/assets/scss/component/_typography.scss @@ -229,7 +229,7 @@ } &-title { - margin-left: 8px; + margin-left: 4px; font-weight: 500; font-size: 114%; opacity: .86; diff --git a/app/src/boot/globalEvent/mousemove.ts b/app/src/boot/globalEvent/mousemove.ts index a4932a1b5..f0498813c 100644 --- a/app/src/boot/globalEvent/mousemove.ts +++ b/app/src/boot/globalEvent/mousemove.ts @@ -104,15 +104,11 @@ export const windowMouseMove = (event: MouseEvent, mouseIsEnter: boolean) => { if (!targetBlockElement) { return; } - let rowElement: Element; - if (targetBlockElement.classList.contains("av")) { - rowElement = hasClosestByClassName(mouseElement, "av__row") as HTMLElement; - } const allModels = getAllModels(); let findNode = false; allModels.editor.find(item => { if (item.editor.protyle.wysiwyg.element === eventPath0) { - item.editor.protyle.gutter.render(item.editor.protyle, targetBlockElement, item.editor.protyle.wysiwyg.element, rowElement); + item.editor.protyle.gutter.render(item.editor.protyle, targetBlockElement, mouseElement); findNode = true; return true; } @@ -121,7 +117,7 @@ export const windowMouseMove = (event: MouseEvent, mouseIsEnter: boolean) => { window.siyuan.blockPanels.find(item => { item.editors.find(eItem => { if (eItem.protyle.wysiwyg.element.contains(eventPath0)) { - eItem.protyle.gutter.render(eItem.protyle, targetBlockElement, eItem.protyle.wysiwyg.element, rowElement); + eItem.protyle.gutter.render(eItem.protyle, targetBlockElement, mouseElement); findNode = true; return true; } @@ -135,7 +131,7 @@ export const windowMouseMove = (event: MouseEvent, mouseIsEnter: boolean) => { allModels.backlink.find(item => { item.editors.find(eItem => { if (eItem.protyle.wysiwyg.element === eventPath0) { - eItem.protyle.gutter.render(eItem.protyle, targetBlockElement, eItem.protyle.wysiwyg.element, rowElement); + eItem.protyle.gutter.render(eItem.protyle, targetBlockElement, mouseElement); findNode = true; return true; } @@ -162,7 +158,7 @@ export const windowMouseMove = (event: MouseEvent, mouseIsEnter: boolean) => { let findNode = false; allModels.editor.find(item => { if (item.editor.protyle.wysiwyg.element.contains(eventPath0)) { - item.editor.protyle.gutter.render(item.editor.protyle, targetBlockElement, item.editor.protyle.wysiwyg.element); + item.editor.protyle.gutter.render(item.editor.protyle, targetBlockElement); findNode = true; return true; } @@ -171,7 +167,7 @@ export const windowMouseMove = (event: MouseEvent, mouseIsEnter: boolean) => { window.siyuan.blockPanels.find(item => { item.editors.find(eItem => { if (eItem.protyle.wysiwyg.element.contains(eventPath0)) { - eItem.protyle.gutter.render(eItem.protyle, targetBlockElement, eItem.protyle.wysiwyg.element); + eItem.protyle.gutter.render(eItem.protyle, targetBlockElement); findNode = true; return true; } @@ -185,7 +181,7 @@ export const windowMouseMove = (event: MouseEvent, mouseIsEnter: boolean) => { allModels.backlink.find(item => { item.editors.find(eItem => { if (eItem.protyle.wysiwyg.element.contains(eventPath0)) { - eItem.protyle.gutter.render(eItem.protyle, targetBlockElement, eItem.protyle.wysiwyg.element); + eItem.protyle.gutter.render(eItem.protyle, targetBlockElement); findNode = true; return true; } @@ -205,7 +201,7 @@ export const windowMouseMove = (event: MouseEvent, mouseIsEnter: boolean) => { if (rowElement && !rowElement.classList.contains("av__row--header")) { getAllEditor().find(item => { if (item.protyle.wysiwyg.element.contains(eventPath0)) { - item.protyle.gutter.render(item.protyle, eventPath0, item.protyle.wysiwyg.element, rowElement); + item.protyle.gutter.render(item.protyle, eventPath0, rowElement); return true; } }); diff --git a/app/src/protyle/gutter/index.ts b/app/src/protyle/gutter/index.ts index 72eb69f40..38ad5b284 100644 --- a/app/src/protyle/gutter/index.ts +++ b/app/src/protyle/gutter/index.ts @@ -2468,13 +2468,13 @@ export class Gutter { }; } - public render(protyle: IProtyle, element: Element, wysiwyg: HTMLElement, target?: Element) { + public render(protyle: IProtyle, element: Element, target?: Element) { // https://github.com/siyuan-note/siyuan/issues/4659 if (protyle.title && protyle.title.element.getAttribute("data-render") !== "true") { return; } // 防止划选时触碰图标导致 hl 无法移除 - const selectElement = wysiwyg.parentElement.parentElement.querySelector(".protyle-select"); + const selectElement = protyle.element.querySelector(".protyle-select"); if (selectElement && !selectElement.classList.contains("fn__none")) { return; } @@ -2512,8 +2512,12 @@ export class Gutter { } if (index === 0) { // 不单独显示,要不然在块的间隔中,gutter 会跳来跳去的 - if (["NodeBlockquote", "NodeCallout", "NodeList", "NodeSuperBlock"].includes(type)) { - return; + if (["NodeBlockquote", "NodeList", "NodeCallout", "NodeSuperBlock"].includes(type)) { + if (target && type === "NodeCallout" && hasTopClosestByClassName(target, "callout-info")) { + // Callout 标题需显示 + } else { + return; + } } const topElement = getTopAloneElement(nodeElement); listItem = topElement.querySelector(".li") || topElement.querySelector(".list"); @@ -2522,7 +2526,7 @@ export class Gutter { listItem = undefined; } // 标题必须显示 - if (topElement !== nodeElement && type !== "NodeHeading") { + if (topElement !== nodeElement && type !== "NodeHeading" && !topElement.classList.contains("callout")) { nodeElement = topElement; parentElement = hasClosestBlock(nodeElement.parentElement); type = nodeElement.getAttribute("data-type"); @@ -2569,7 +2573,8 @@ data-type="fold" style="cursor:inherit;"> { } const embedElement = isInEmbedBlock(nodeElement); if (embedElement) { - protyle.gutter.render(protyle, embedElement, protyle.wysiwyg.element); + protyle.gutter.render(protyle, embedElement); return; } - protyle.gutter.render(protyle, nodeElement, protyle.wysiwyg.element, event.target); + protyle.gutter.render(protyle, nodeElement, event.target); return; }