mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-05-15 00:21:00 +08:00
This commit is contained in:
parent
07645e2e86
commit
bd2b35320f
@ -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
|
||||||
|
@ -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
|
||||||
|
29
app/src/window/openNewWindow.ts
Normal file
29
app/src/window/openNewWindow.ts
Normal 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);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user