diff --git a/app/src/boot/onGetConfig.ts b/app/src/boot/onGetConfig.ts index 37b8dde94..ba416b771 100644 --- a/app/src/boot/onGetConfig.ts +++ b/app/src/boot/onGetConfig.ts @@ -172,6 +172,19 @@ const winOnMaxRestore = async () => { /// #endif }; +const saveUI = () => { + exportLayout({ + reload: false, + onlyData: false, + errorExit: false + }); +} + +export const unbindSaveUI = () => { + window.removeEventListener("beforeunload", saveUI); + window.removeEventListener("pagehide", saveUI); +} + export const initWindow = async (app: App) => { /// #if !BROWSER const winOnClose = (close = false) => { @@ -509,19 +522,7 @@ ${response.data.replace("%pages", "").replace("%pa if (!isWindow()) { document.querySelector(".toolbar").classList.add("toolbar--browser"); } - window.addEventListener("beforeunload", () => { - exportLayout({ - reload: false, - onlyData: false, - errorExit: false - }); - }, false); - window.addEventListener("pagehide", () => { - exportLayout({ - reload: false, - onlyData: false, - errorExit: false - }); - }, false); + window.addEventListener("beforeunload", saveUI, false); + window.addEventListener("pagehide", saveUI, false); /// #endif }; diff --git a/app/src/menus/workspace.ts b/app/src/menus/workspace.ts index 35e8bdc10..012c1acba 100644 --- a/app/src/menus/workspace.ts +++ b/app/src/menus/workspace.ts @@ -23,6 +23,7 @@ import {hasClosestByClassName} from "../protyle/util/hasClosest"; import {confirmDialog} from "../dialog/confirmDialog"; import {App} from "../index"; import {isBrowser} from "../util/functions"; +import {unbindSaveUI} from "../boot/onGetConfig"; const togglePinDock = (dock: Dock, icon: string) => { return { @@ -276,6 +277,9 @@ export const workspaceMenu = (app: App, rect: DOMRect) => { }); } }]; + if (window.siyuan.storage[Constants.LOCAL_LAYOUTS].length > 0) { + layoutSubMenu.push({type: "separator"}); + } window.siyuan.storage[Constants.LOCAL_LAYOUTS].forEach((item: ISaveLayout) => { layoutSubMenu.push({ iconHTML: Constants.ZWSP, @@ -297,6 +301,7 @@ export const workspaceMenu = (app: App, rect: DOMRect) => { return; } fetchPost("/api/system/setUILayout", {layout: item.layout}, () => { + unbindSaveUI(); window.location.reload(); }); });