diff --git a/app/electron/main.js b/app/electron/main.js index ec2f06c0a..a1746fdbc 100644 --- a/app/electron/main.js +++ b/app/electron/main.js @@ -736,12 +736,15 @@ app.whenReady().then(() => { } }); ipcMain.on("siyuan-openwindow", (event, data) => { + const mainWindow = BrowserWindow.fromId(data.id); + const mainBounds = mainWindow.getBounds(); + const mainScreen = screen.getDisplayNearestPoint({x: mainBounds.x, y: mainBounds.y}); const win = new BrowserWindow({ show: true, backgroundColor: "#FFF", trafficLightPosition: {x: 8, y: 13}, - width: screen.getPrimaryDisplay().size.width * 0.7, - height: screen.getPrimaryDisplay().size.height * 0.9, + width: mainScreen.size.width * 0.7, + height: mainScreen.size.height * 0.9, minWidth: 493, minHeight: 376, fullscreenable: true, @@ -755,7 +758,11 @@ app.whenReady().then(() => { webSecurity: false, }, }); - win.loadURL(data); + win.loadURL(data.url); + const targetScreen = screen.getDisplayNearestPoint(screen.getCursorScreenPoint()) + if (mainScreen.id !== targetScreen.id) { + win.setBounds(targetScreen.workArea) + } require("@electron/remote/main").enable(win.webContents); }); ipcMain.on("siyuan-open-workspace", (event, data) => { diff --git a/app/src/dialog/processSystem.ts b/app/src/dialog/processSystem.ts index 443189017..5646e8f17 100644 --- a/app/src/dialog/processSystem.ts +++ b/app/src/dialog/processSystem.ts @@ -2,14 +2,16 @@ import {Constants} from "../constants"; import {fetchPost} from "../util/fetch"; /// #if !MOBILE import {getAllModels} from "../layout/getAll"; -import {ipcRenderer} from "electron"; import {exportLayout} from "../layout/util"; /// #endif +/// #if !BROWSER +import {ipcRenderer} from "electron"; +import {getCurrentWindow} from "@electron/remote"; +/// #endif import {hideMessage, showMessage} from "./message"; import {Dialog} from "./index"; import {isMobile} from "../util/functions"; import {confirmDialog} from "./confirmDialog"; -import {getCurrentWindow} from "@electron/remote"; import {escapeHtml} from "../util/escape"; import {getWorkspaceName} from "../util/noRelyPCFunction"; import {needSubscribe} from "../util/needSubscribe"; diff --git a/app/src/window/openNewWindow.ts b/app/src/window/openNewWindow.ts index 116625a8f..dfcba7a08 100644 --- a/app/src/window/openNewWindow.ts +++ b/app/src/window/openNewWindow.ts @@ -1,6 +1,7 @@ import {layoutToJSON} from "../layout/util"; /// #if !BROWSER import {ipcRenderer} from "electron"; +import {getCurrentWindow} from "@electron/remote"; /// #endif import {Constants} from "../constants"; import {Tab} from "../layout/Tab"; @@ -12,7 +13,10 @@ export const openNewWindow = (tab: Tab) => { const json = {}; layoutToJSON(tab, json); /// #if !BROWSER - ipcRenderer.send(Constants.SIYUAN_OPENWINDOW, `${window.location.protocol}//${window.location.host}/stage/build/app/window.html?v=${Constants.SIYUAN_VERSION}&json=${JSON.stringify(json)}`); + ipcRenderer.send(Constants.SIYUAN_OPENWINDOW, { + id: getCurrentWindow().id, + url: `${window.location.protocol}//${window.location.host}/stage/build/app/window.html?v=${Constants.SIYUAN_VERSION}&json=${JSON.stringify(json)}` + }); /// #endif tab.parent.removeTab(tab.id); }; @@ -47,7 +51,10 @@ export const openNewWindowById = (id: string) => { fetchPost("/api/attr/getBlockAttrs", {id}, (attrResponse) => { json.children.scrollAttr = JSON.parse(attrResponse.data.scroll || "{}"); /// #if !BROWSER - ipcRenderer.send(Constants.SIYUAN_OPENWINDOW, `${window.location.protocol}//${window.location.host}/stage/build/app/window.html?v=${Constants.SIYUAN_VERSION}&json=${JSON.stringify(json)}`); + ipcRenderer.send(Constants.SIYUAN_OPENWINDOW, { + id: getCurrentWindow().id, + url: `${window.location.protocol}//${window.location.host}/stage/build/app/window.html?v=${Constants.SIYUAN_VERSION}&json=${JSON.stringify(json)}` + }); /// #endif }); } else { @@ -61,7 +68,10 @@ export const openNewWindowById = (id: string) => { focusEnd: 0 }; /// #if !BROWSER - ipcRenderer.send(Constants.SIYUAN_OPENWINDOW, `${window.location.protocol}//${window.location.host}/stage/build/app/window.html?v=${Constants.SIYUAN_VERSION}&json=${JSON.stringify(json)}`); + ipcRenderer.send(Constants.SIYUAN_OPENWINDOW, { + id: getCurrentWindow().id, + url: `${window.location.protocol}//${window.location.host}/stage/build/app/window.html?v=${Constants.SIYUAN_VERSION}&json=${JSON.stringify(json)}` + }); /// #endif } });