diff --git a/app/appearance/icons/ant/icon.js b/app/appearance/icons/ant/icon.js index 2b13d4617..a8a8b5d53 100644 --- a/app/appearance/icons/ant/icon.js +++ b/app/appearance/icons/ant/icon.js @@ -1,5 +1,11 @@ document.body.insertAdjacentHTML('afterBegin', ` + + + + + + diff --git a/app/appearance/icons/ant/icon.json b/app/appearance/icons/ant/icon.json index 040887d1b..eadeb495d 100644 --- a/app/appearance/icons/ant/icon.json +++ b/app/appearance/icons/ant/icon.json @@ -2,5 +2,5 @@ "name": "ant", "author": "Vanessa", "url": "https://github.com/Vanessa219", - "version": "1.18.0" + "version": "1.19.0" } diff --git a/app/appearance/icons/index.html b/app/appearance/icons/index.html index 55d409099..a92bdf490 100644 --- a/app/appearance/icons/index.html +++ b/app/appearance/icons/index.html @@ -28,6 +28,18 @@

SiYuan

+
+ + + + iconZoomIn +
+
+ + + + iconZoomOut +
diff --git a/app/appearance/icons/material/icon.js b/app/appearance/icons/material/icon.js index e2c252234..79dff43f0 100644 --- a/app/appearance/icons/material/icon.js +++ b/app/appearance/icons/material/icon.js @@ -1,5 +1,11 @@ document.body.insertAdjacentHTML('afterbegin', ` + + + + + + diff --git a/app/appearance/icons/material/icon.json b/app/appearance/icons/material/icon.json index 6f4fc6279..67b80155c 100644 --- a/app/appearance/icons/material/icon.json +++ b/app/appearance/icons/material/icon.json @@ -2,5 +2,5 @@ "name": "material", "author": "Vanessa", "url": "https://github.com/Vanessa219", - "version": "1.18.0" + "version": "1.19.0" } diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index c30eb4745..63b9f3716 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -536,7 +536,7 @@ "memo": "Memo", "name": "Name", "fold": "Fold/Expand", - "zoom": "Zoom and Position", + "zoom": "Zoom", "invalid": "Invalid", "conflict": "Conflict", "checkToggle": "Check the task list to switch", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index ad7eb9fb4..7ffc53b83 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -536,7 +536,7 @@ "memo": "Memo", "name": "Nombre", "fold": "Plegar/Expandir", - "zoom": "Zoom y posición", + "zoom": "Zoom", "invalid": "Inválido", "conflict": "Conflicto", "checkToggle": "Compruebe la lista de tareas para cambiar", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index 7658d3dc1..b761dc33f 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -536,7 +536,7 @@ "memo": "Remarques", "name": "Nom", "fold": "Pliage/Élargir", - "zoom": "Zoom et position", + "zoom": "Zoom", "invalid": "Invalide", "conflict": "Conflit", "checkToggle": "Vérifiez la liste des tâches pour passer", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 7786a6d84..1a858e183 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -536,7 +536,7 @@ "memo": "備註", "name": "命名", "fold": "摺疊/展開", - "zoom": "縮放和位置", + "zoom": "縮放", "invalid": "無效", "conflict": "衝突", "checkToggle": "任務列表勾選切換", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 266f41e8e..9c44d8354 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -536,7 +536,7 @@ "memo": "备注", "name": "命名", "fold": "折叠/展开", - "zoom": "缩放和位置", + "zoom": "缩放", "invalid": "无效", "conflict": "冲突", "checkToggle": "任务列表勾选切换", diff --git a/app/src/boot/globalShortcut.ts b/app/src/boot/globalShortcut.ts index 00a651b17..2a5588d6d 100644 --- a/app/src/boot/globalShortcut.ts +++ b/app/src/boot/globalShortcut.ts @@ -1,4 +1,4 @@ -import {isCtrl, isMac, setStorageVal, updateHotkeyTip, writeText} from "../protyle/util/compatibility"; +import {isCtrl, isMac, updateHotkeyTip, writeText} from "../protyle/util/compatibility"; import {matchHotKey} from "../protyle/util/hotKey"; import {openSearch} from "../search/spread"; import { @@ -43,7 +43,7 @@ import {editor} from "../config/editor"; import {hintMoveBlock} from "../protyle/hint/extend"; import {Backlink} from "../layout/dock/Backlink"; /// #if !BROWSER -import {webFrame} from "electron"; +import {setZoom} from "../layout/topBar"; /// #endif import {openHistory} from "../history/history"; import {openCard, openCardByData} from "../card/openCard"; @@ -575,39 +575,17 @@ export const globalShortcut = (app: App) => { /// #if !BROWSER if (matchHotKey("⌘=", event) && !hasClosestByClassName(target, "pdf__outer")) { - Constants.SIZE_ZOOM.find((item, index) => { - if (item === window.siyuan.storage[Constants.LOCAL_ZOOM]) { - window.siyuan.storage[Constants.LOCAL_ZOOM] = Constants.SIZE_ZOOM[index + 1] || 3; - webFrame.setZoomFactor(window.siyuan.storage[Constants.LOCAL_ZOOM]); - if (!isTabWindow) { - setStorageVal(Constants.LOCAL_ZOOM, window.siyuan.storage[Constants.LOCAL_ZOOM]); - } - return true; - } - }); + setZoom("zoomIn") event.preventDefault(); return; } if (matchHotKey("⌘0", event)) { - webFrame.setZoomFactor(1); - window.siyuan.storage[Constants.LOCAL_ZOOM] = 1; - if (!isTabWindow) { - setStorageVal(Constants.LOCAL_ZOOM, 1); - } + setZoom("restore") event.preventDefault(); return; } if (matchHotKey("⌘-", event) && !hasClosestByClassName(target, "pdf__outer")) { - Constants.SIZE_ZOOM.find((item, index) => { - if (item === window.siyuan.storage[Constants.LOCAL_ZOOM]) { - window.siyuan.storage[Constants.LOCAL_ZOOM] = Constants.SIZE_ZOOM[index - 1] || 0.25; - webFrame.setZoomFactor(window.siyuan.storage[Constants.LOCAL_ZOOM]); - if (!isTabWindow) { - setStorageVal(Constants.LOCAL_ZOOM, window.siyuan.storage[Constants.LOCAL_ZOOM]); - } - return true; - } - }); + setZoom("zoomOut") event.preventDefault(); return; } diff --git a/app/src/layout/topBar.ts b/app/src/layout/topBar.ts index 26be5946b..7b2b16c3b 100644 --- a/app/src/layout/topBar.ts +++ b/app/src/layout/topBar.ts @@ -1,5 +1,5 @@ import {getWorkspaceName} from "../util/noRelyPCFunction"; -import {updateHotkeyTip} from "../protyle/util/compatibility"; +import {setStorageVal, updateHotkeyTip} from "../protyle/util/compatibility"; import {processSync} from "../dialog/processSystem"; import {goBack, goForward} from "../util/backForward"; import {syncGuide} from "../sync/syncGuide"; @@ -10,6 +10,11 @@ import {setMode} from "../util/assets"; import {openSetting} from "../config"; import {openSearch} from "../search/spread"; import {App} from "../index"; +/// #if !BROWSER +import {webFrame} from "electron"; +/// #endif +import {Constants} from "../constants"; +import {isBrowser, isWindow} from "../util/functions"; export const updateEditModeElement = () => { const target = document.querySelector("#barReadonly"); @@ -45,6 +50,9 @@ export const initBar = (app: App) => {
+
+ +
@@ -123,8 +131,82 @@ export const initBar = (app: App) => { openSearch(window.siyuan.config.keymap.general.globalSearch.custom); event.stopPropagation(); break; + } else if (target.id === "barZoom") { + if (!window.siyuan.menus.menu.element.classList.contains("fn__none") && + window.siyuan.menus.menu.element.getAttribute("data-name") === "barZoom") { + window.siyuan.menus.menu.remove(); + return; + } + window.siyuan.menus.menu.remove(); + window.siyuan.menus.menu.element.setAttribute("data-name", "barZoom"); + window.siyuan.menus.menu.append(new MenuItem({ + label: window.siyuan.languages.zoomIn, + icon: "iconZoomIn", + accelerator: "⌘=", + click: () => { + setZoom("zoomIn") + } + }).element); + window.siyuan.menus.menu.append(new MenuItem({ + label: window.siyuan.languages.zoomOut, + accelerator: "⌘-", + icon: "iconZoomOut", + click: () => { + setZoom("zoomOut") + } + }).element); + window.siyuan.menus.menu.append(new MenuItem({ + label: window.siyuan.languages.reset, + accelerator: "⌘0", + click: () => { + setZoom("restore") + } + }).element); + const rect = target.getBoundingClientRect(); + window.siyuan.menus.menu.popup({x: rect.right, y: rect.bottom}, true); + event.stopPropagation(); + break; } target = target.parentElement; } }); }; + +export const setZoom = (type: "zoomIn" | "zoomOut" | "restore") => { + /// #if !BROWSER + const isTabWindow = isWindow(); + let zoom = 1; + if (type === "zoomIn") { + Constants.SIZE_ZOOM.find((item, index) => { + if (item === window.siyuan.storage[Constants.LOCAL_ZOOM]) { + zoom = Constants.SIZE_ZOOM[index + 1] || 3; + return true; + } + }); + } else if (type === "zoomOut") { + Constants.SIZE_ZOOM.find((item, index) => { + if (item === window.siyuan.storage[Constants.LOCAL_ZOOM]) { + zoom = Constants.SIZE_ZOOM[index - 1] || 0.25; + return true; + } + }); + } + + webFrame.setZoomFactor(zoom); + window.siyuan.storage[Constants.LOCAL_ZOOM] = zoom; + if (!isTabWindow) { + setStorageVal(Constants.LOCAL_ZOOM, zoom); + } + const barZoomElement = document.getElementById("barZoom"); + if (zoom === 1) { + barZoomElement.classList.add("fn__none"); + } else { + if (zoom > 1) { + barZoomElement.querySelector("use").setAttribute("xlink:href", "#iconZoomIn") + } else { + barZoomElement.querySelector("use").setAttribute("xlink:href", "#iconZoomOut") + } + barZoomElement.classList.remove("fn__none"); + } + /// #endif +}