Sfoglia il codice sorgente

:art: fix https://github.com/siyuan-note/siyuan/issues/7490

Vanessa 2 anni fa
parent
commit
c8e64a8bbb
3 ha cambiato i file con 27 aggiunte e 8 eliminazioni
  1. 10 3
      app/electron/main.js
  2. 4 2
      app/src/dialog/processSystem.ts
  3. 13 3
      app/src/window/openNewWindow.ts

+ 10 - 3
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) => {

+ 4 - 2
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";

+ 13 - 3
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
         }
     });