From fe6353032593c5db9d0ca079af9432131a9a389d Mon Sep 17 00:00:00 2001 From: Vanessa Date: Mon, 13 Feb 2023 23:16:01 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/7356 --- app/src/assets/scss/base.scss | 29 +++++++++++++++++------------ app/src/util/globalShortcut.ts | 2 +- app/src/util/onGetConfig.ts | 25 ++++++++++++++++++++++--- app/src/window/setHeader.ts | 7 +++++-- 4 files changed, 45 insertions(+), 18 deletions(-) diff --git a/app/src/assets/scss/base.scss b/app/src/assets/scss/base.scss index 6086aad35..c3c75ef07 100644 --- a/app/src/assets/scss/base.scss +++ b/app/src/assets/scss/base.scss @@ -187,18 +187,6 @@ progressLoading: 400 padding-left: 0; } - &__window { - position: fixed; - top: 0; - right: 0; - display: flex; - z-index: 502; - - .toolbar__item { - padding: 14px; - } - } - #windowControls { top: 0; z-index: 502; @@ -269,6 +257,23 @@ progressLoading: 400 } } + &__window { + position: fixed; + top: 0; + right: 0; + display: flex; + z-index: 502; + + .toolbar__item { + padding: 14.25px; + + &:not(.toolbar__item--disabled):not(.toolbar__item--close):hover, + &--active { + background-color: var(--b3-theme-background-light); + } + } + } + &__text { font-size: 12px; max-width: 96px; diff --git a/app/src/util/globalShortcut.ts b/app/src/util/globalShortcut.ts index 0b6e11779..aa9592f78 100644 --- a/app/src/util/globalShortcut.ts +++ b/app/src/util/globalShortcut.ts @@ -836,7 +836,7 @@ export const globalShortcut = () => { if (!floatDockLayoutElement.isSameNode(window.siyuan.layout.rightDock.layout.element)) { window.siyuan.layout.rightDock.hideDock(); } - } else if (!hasClosestByClassName(event.target, "dock")) { + } else if (!hasClosestByClassName(event.target, "dock") && !isWindow()) { window.siyuan.layout.topDock.hideDock(); window.siyuan.layout.bottomDock.hideDock(); window.siyuan.layout.leftDock.hideDock(); diff --git a/app/src/util/onGetConfig.ts b/app/src/util/onGetConfig.ts index 4172275d4..f6f5e9abe 100644 --- a/app/src/util/onGetConfig.ts +++ b/app/src/util/onGetConfig.ts @@ -30,7 +30,7 @@ import {replaceLocalPath} from "../editor/rename"; import {workspaceMenu} from "../menus/workspace"; import {getWorkspaceName} from "./noRelyPCFunction"; import {setTabPosition} from "../window/setHeader"; -import { Tab } from "../layout/Tab"; +import {Tab} from "../layout/Tab"; const matchKeymap = (keymap: Record, key1: "general" | "editor", key2?: "general" | "insert" | "heading" | "list" | "table") => { if (key1 === "general") { @@ -357,7 +357,7 @@ export const initWindow = () => { }); } ipcRenderer.on(Constants.SIYUAN_CLOSETAB, (e, ipcData) => { - const tab = getInstanceById(ipcData); + const tab = getInstanceById(ipcData); if (tab && tab instanceof Tab) { tab.parent.removeTab(ipcData); } @@ -462,6 +462,25 @@ export const initWindow = () => { window.addEventListener("beforeunload", () => { currentWindow.off("focus", winOnFocus); }, false); + if (isWindow()) { + document.body.insertAdjacentHTML("beforeend", `
+
+ + + +
`); + const pinElement = document.getElementById("pinWindow") + pinElement.addEventListener("click", () => { + pinElement.classList.toggle("toolbar__item--active") + if (pinElement.classList.contains("toolbar__item--active")) { + pinElement.setAttribute("aria-label", window.siyuan.languages.unpin); + currentWindow.setAlwaysOnTop(true, "pop-up-menu") + } else { + pinElement.setAttribute("aria-label", window.siyuan.languages.pin); + currentWindow.setAlwaysOnTop(false) + } + }); + } if ("darwin" === window.siyuan.config.system.os) { document.getElementById("drag")?.addEventListener("dblclick", () => { if (currentWindow.isMaximized()) { @@ -515,7 +534,7 @@ export const initWindow = () => { `; if (isWindow()) { - document.body.insertAdjacentHTML("beforeend", `
${controlsHTML}
`); + document.querySelector(".toolbar__window").insertAdjacentHTML("beforeend", controlsHTML); } else { document.getElementById("windowControls").innerHTML = controlsHTML; } diff --git a/app/src/window/setHeader.ts b/app/src/window/setHeader.ts index 4d22af8a8..902b06e55 100644 --- a/app/src/window/setHeader.ts +++ b/app/src/window/setHeader.ts @@ -31,18 +31,21 @@ export const setTabPosition = () => { // @ts-ignore dragElement.style.WebkitAppRegion = ""; } + const headersLastElement = headerElement.lastElementChild as HTMLElement if ("darwin" === window.siyuan.config.system.os) { if (rect.top <= 0 && rect.left <= 0 && !getCurrentWindow().isFullScreen()) { item.headersElement.style.paddingLeft = "69px"; + headersLastElement.style.paddingRight = "42px"; } else { item.headersElement.style.paddingLeft = ""; + headersLastElement.style.paddingRight = ""; } } else { // 显示器缩放后像素存在小数点偏差 https://github.com/siyuan-note/siyuan/issues/7355 if (rect.top <= 0 && rect.right + 8 >= window.innerWidth) { - (headerElement.lastElementChild as HTMLElement).style.paddingRight = (42 * 3) + "px"; + headersLastElement.style.paddingRight = (42 * 4) + "px"; } else { - (headerElement.lastElementChild as HTMLElement).style.paddingRight = ""; + headersLastElement.style.paddingRight = ""; } } });