Vanessa 2023-01-28 00:41:44 +08:00
parent 07645e2e86
commit bd2b35320f
3 changed files with 47 additions and 23 deletions

View File

@ -9,6 +9,10 @@ import {unicode2Emoji} from "../emoji";
import {fetchPost} from "../util/fetch"; import {fetchPost} from "../util/fetch";
import {showTooltip} from "../dialog/tooltip"; import {showTooltip} from "../dialog/tooltip";
import {isTouchDevice} from "../util/functions"; import {isTouchDevice} from "../util/functions";
/// #if !BROWSER
import {getCurrentWindow} from "@electron/remote";
import {openNewWindow} from "../window/openNewWindow";
/// #endif
import {layoutToJSON} from "./util"; import {layoutToJSON} from "./util";
export class Tab { export class Tab {
@ -93,6 +97,17 @@ export class Tab {
item.remove(); item.remove();
}); });
} }
/// #if !BROWSER
// 拖拽到屏幕外
setTimeout(() => {
if (!this.headElement.style.maxWidth) {
const windowBounds = getCurrentWindow().getBounds();
if (event.clientX < 0 || event.clientY < 0 || event.clientX > windowBounds.width || event.clientY > windowBounds.height) {
openNewWindow(this)
}
}
}, Constants.TIMEOUT_BLOCKLOAD) // 等待主进程发送关闭消息
/// #endif
window.siyuan.dragElement = undefined; window.siyuan.dragElement = undefined;
if (event.dataTransfer.dropEffect === "none") { if (event.dataTransfer.dropEffect === "none") {
// 按 esc 取消的时候应该还原在 dragover 时交换的 tab // 按 esc 取消的时候应该还原在 dragover 时交换的 tab

View File

@ -1,13 +1,11 @@
import {Tab} from "../layout/Tab"; import {Tab} from "../layout/Tab";
import {MenuItem} from "./Menu"; import {MenuItem} from "./Menu";
import {Editor} from "../editor"; import {Editor} from "../editor";
import {copyTab, layoutToJSON} from "../layout/util"; import {copyTab} from "../layout/util";
/// #if !BROWSER /// #if !BROWSER
import {BrowserWindow} from "@electron/remote"; import {openNewWindow} from "../window/openNewWindow";
import * as path from "path";
/// #endif /// #endif
import {copySubMenu} from "./commonMenuItem"; import {copySubMenu} from "./commonMenuItem";
import {Constants} from "../constants";
const closeMenu = (tab: Tab) => { const closeMenu = (tab: Tab) => {
const allTabs: Tab[] = []; const allTabs: Tab[] = [];
@ -208,25 +206,7 @@ export const initTabMenu = (tab: Tab) => {
label: window.siyuan.languages.tabToWindow, label: window.siyuan.languages.tabToWindow,
icon: "iconMove", icon: "iconMove",
click: () => { click: () => {
const win = new BrowserWindow({ openNewWindow(tab);
show: true,
trafficLightPosition: {x: 8, y: 13},
width: 1032,
height: 650,
frame: "darwin" === window.siyuan.config.system.os,
icon: path.join(window.siyuan.config.system.appDir, "stage", "icon-large.png"),
titleBarStyle: "hidden",
webPreferences: {
contextIsolation: false,
nodeIntegration: true,
webviewTag: true,
webSecurity: false,
},
});
const json = {};
layoutToJSON(tab, json);
win.loadURL(`${window.location.protocol}//${window.location.host}/stage/build/app/window.html?v=${Constants.SIYUAN_VERSION}&json=${JSON.stringify(json)}`);
tab.parent.removeTab(tab.id);
} }
}).element); }).element);
/// #endif /// #endif

View File

@ -0,0 +1,29 @@
import {layoutToJSON} from "../layout/util";
/// #if !BROWSER
import {BrowserWindow} from "@electron/remote";
import * as path from "path";
/// #endif
import {Constants} from "../constants";
import {Tab} from "../layout/Tab";
export const openNewWindow = (tab: Tab) => {
const win = new BrowserWindow({
show: true,
trafficLightPosition: {x: 8, y: 13},
width: 1032,
height: 650,
frame: "darwin" === window.siyuan.config.system.os,
icon: path.join(window.siyuan.config.system.appDir, "stage", "icon-large.png"),
titleBarStyle: "hidden",
webPreferences: {
contextIsolation: false,
nodeIntegration: true,
webviewTag: true,
webSecurity: false,
},
});
const json = {};
layoutToJSON(tab, json);
win.loadURL(`${window.location.protocol}//${window.location.host}/stage/build/app/window.html?v=${Constants.SIYUAN_VERSION}&json=${JSON.stringify(json)}`);
tab.parent.removeTab(tab.id);
}