diff --git a/app/src/boot/globalEvent/searchKeydown.ts b/app/src/boot/globalEvent/searchKeydown.ts index e08910251..2fa1280ef 100644 --- a/app/src/boot/globalEvent/searchKeydown.ts +++ b/app/src/boot/globalEvent/searchKeydown.ts @@ -99,12 +99,13 @@ export const searchKeydown = (app: App, event: KeyboardEvent) => { if (searchType !== "asset") { if (matchHotKey(window.siyuan.config.keymap.editor.general.insertRight.custom, event)) { const id = currentList.getAttribute("data-node-id"); - checkFold(id, (zoomIn, action) => { + checkFold(id, (zoomIn) => { openFileById({ app, id, position: "right", - action: [...action, Constants.CB_GET_HL], + action: zoomIn ? [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL, Constants.CB_GET_HL] : + [Constants.CB_GET_FOCUS, Constants.CB_GET_CONTEXT, Constants.CB_GET_HL], zoomIn, scrollPosition: "center" }); @@ -222,11 +223,12 @@ export const searchKeydown = (app: App, event: KeyboardEvent) => { replace(element, config, edit, false); } else { const id = currentList.getAttribute("data-node-id"); - checkFold(id, (zoomIn, action) => { + checkFold(id, (zoomIn) => { openFileById({ app, id, - action: [...action, Constants.CB_GET_HL], + action: zoomIn ? [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL, Constants.CB_GET_HL] : + [Constants.CB_GET_FOCUS, Constants.CB_GET_CONTEXT, Constants.CB_GET_HL], zoomIn, scrollPosition: "center" }); diff --git a/app/src/editor/util.ts b/app/src/editor/util.ts index dfb8c2e5e..4e6f49a1b 100644 --- a/app/src/editor/util.ts +++ b/app/src/editor/util.ts @@ -339,6 +339,7 @@ const getUnInitTab = (options: IOpenFileOptions) => { } else { initObj.action = options.action; } + initObj.scrollPosition = options.scrollPosition; item.headElement.setAttribute("data-initdata", JSON.stringify(initObj)); item.parent.switchTab(item.headElement); return true; diff --git a/app/src/layout/util.ts b/app/src/layout/util.ts index 7f2a8136a..102d38d58 100644 --- a/app/src/layout/util.ts +++ b/app/src/layout/util.ts @@ -750,6 +750,7 @@ export const newModelByInitData = (app: App, tab: Tab, json: any) => { rootId: json.rootId, blockId: json.blockId, mode: json.mode, + scrollPosition: json.scrollPosition, action: typeof json.action === "string" ? (json.action ? [json.action, Constants.CB_GET_FOCUS] : [Constants.CB_GET_FOCUS]) : json.action.concat(Constants.CB_GET_FOCUS), }); } diff --git a/app/src/protyle/util/onGet.ts b/app/src/protyle/util/onGet.ts index a0874e0da..c7a668381 100644 --- a/app/src/protyle/util/onGet.ts +++ b/app/src/protyle/util/onGet.ts @@ -464,6 +464,9 @@ const focusElementById = (protyle: IProtyle, action: string[], scrollAttr?: IScr } }); } + if (!focusElement && protyle.block.id === protyle.block.rootID) { + focusElement = protyle.title.editElement; + } if (protyle.block.mode === 4) { preventScroll(protyle); focusElement = protyle.wysiwyg.element.lastElementChild; diff --git a/app/src/search/util.ts b/app/src/search/util.ts index d9c1d2aa3..b88725200 100644 --- a/app/src/search/util.ts +++ b/app/src/search/util.ts @@ -815,11 +815,12 @@ export const genSearch = (app: App, config: Config.IUILayoutTabSearchConfig, ele } else { if (event.altKey) { const id = target.getAttribute("data-node-id"); - checkFold(id, (zoomIn, action) => { + checkFold(id, (zoomIn) => { openFileById({ app, id, - action: [...action, Constants.CB_GET_HL], + action: zoomIn ? [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL, Constants.CB_GET_HL] : + [Constants.CB_GET_FOCUS, Constants.CB_GET_CONTEXT, Constants.CB_GET_HL], zoomIn, position: "right", scrollPosition: "center" @@ -856,11 +857,12 @@ export const genSearch = (app: App, config: Config.IUILayoutTabSearchConfig, ele /// #endif } else { const id = target.getAttribute("data-node-id"); - checkFold(id, (zoomIn, action) => { + checkFold(id, (zoomIn) => { openFileById({ app, id, - action: [...action, Constants.CB_GET_HL], + action: zoomIn ? [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL, Constants.CB_GET_HL] : + [Constants.CB_GET_FOCUS, Constants.CB_GET_CONTEXT, Constants.CB_GET_HL], zoomIn, scrollPosition: "center" });