diff --git a/app/src/protyle/render/av/col.ts b/app/src/protyle/render/av/col.ts index 90c1d905b..2e054922f 100644 --- a/app/src/protyle/render/av/col.ts +++ b/app/src/protyle/render/av/col.ts @@ -7,6 +7,7 @@ import {openMenuPanel} from "./openMenuPanel"; import {getLabelByNumberFormat} from "./number"; import {removeAttrViewColAnimation, updateAttrViewCellAnimation} from "./action"; import {openEmojiPanel, unicode2Emoji} from "../../../emoji"; +import {focusBlock} from "../../util/selection"; export const duplicateCol = (options: { protyle: IProtyle, @@ -426,6 +427,8 @@ export const showColMenu = (protyle: IProtyle, blockElement: Element, cellElemen type, }]); updateAttrViewCellAnimation(cellElement); + // https://github.com/siyuan-note/siyuan/issues/9862 + focusBlock(blockElement); }); menu.addItem({ iconHTML: `${cellElement.dataset.icon ? unicode2Emoji(cellElement.dataset.icon) : ``}`, @@ -466,6 +469,7 @@ export const showColMenu = (protyle: IProtyle, blockElement: Element, cellElemen } if (event.key === "Enter") { menu.close(); + event.preventDefault(); } }); } diff --git a/app/src/protyle/render/av/render.ts b/app/src/protyle/render/av/render.ts index 7e0e6de5c..9f1e9e5d6 100644 --- a/app/src/protyle/render/av/render.ts +++ b/app/src/protyle/render/av/render.ts @@ -6,7 +6,7 @@ import * as dayjs from "dayjs"; import {unicode2Emoji} from "../../../emoji"; import {focusBlock} from "../../util/selection"; import {isMac} from "../../util/compatibility"; -import {hasClosestByClassName} from "../../util/hasClosest"; +import {hasClosestBlock, hasClosestByClassName} from "../../util/hasClosest"; import {stickyRow} from "./row"; import {getCalcValue} from "./calc"; @@ -303,6 +303,16 @@ ${cell.color ? `color:${cell.color};` : ""}">${text}`; focusBlock(e); } } + if (getSelection().rangeCount > 0) { + // 修改表头后光标重新定位 + const range = getSelection().getRangeAt(0) + if (!hasClosestByClassName(range.startContainer, "av__title")) { + const blockElement = hasClosestBlock(range.startContainer) + if (blockElement && e.isSameNode(blockElement)) { + focusBlock(e); + } + } + } e.querySelector(".layout-tab-bar").scrollLeft = (e.querySelector(".layout-tab-bar .item--focus") as HTMLElement).offsetLeft; if (cb) { cb();