Vanessa 2023-02-16 18:29:39 +08:00
parent fd2251348a
commit 4d8b826e29
3 changed files with 17 additions and 15 deletions

View file

@ -18,7 +18,6 @@ export abstract class Constants {
public static readonly SIYUAN_DROP_FILE: string = "application/siyuan-file"; public static readonly SIYUAN_DROP_FILE: string = "application/siyuan-file";
public static readonly SIYUAN_DROP_GUTTER: string = "application/siyuan-gutter"; public static readonly SIYUAN_DROP_GUTTER: string = "application/siyuan-gutter";
public static readonly SIYUAN_DROP_TAB: string = "application/siyuan-tab"; public static readonly SIYUAN_DROP_TAB: string = "application/siyuan-tab";
public static readonly SIYUAN_DROP_TABTOWINDOW: string = "application/siyuan-tabtowindow";
public static readonly SIYUAN_DROP_EDITOR: string = "application/siyuan-editor"; public static readonly SIYUAN_DROP_EDITOR: string = "application/siyuan-editor";
// 渲染进程调主进程 // 渲染进程调主进程

View file

@ -79,10 +79,9 @@ export class Tab {
const tabElement = hasClosestByTag(event.target, "LI"); const tabElement = hasClosestByTag(event.target, "LI");
if (tabElement) { if (tabElement) {
event.dataTransfer.setData("text/html", tabElement.outerHTML); event.dataTransfer.setData("text/html", tabElement.outerHTML);
event.dataTransfer.setData(Constants.SIYUAN_DROP_TAB, this.id); const modeJSON = {id:this.id};
const modeJSON = {};
layoutToJSON(this, modeJSON); layoutToJSON(this, modeJSON);
event.dataTransfer.setData(Constants.SIYUAN_DROP_TABTOWINDOW, JSON.stringify(modeJSON)); event.dataTransfer.setData(Constants.SIYUAN_DROP_TAB, JSON.stringify(modeJSON));
event.dataTransfer.dropEffect = "move"; event.dataTransfer.dropEffect = "move";
tabElement.style.opacity = "0.1"; tabElement.style.opacity = "0.1";
window.siyuan.dragElement = this.headElement; window.siyuan.dragElement = this.headElement;

View file

@ -127,7 +127,9 @@ export class Wnd {
target = target.parentElement; target = target.parentElement;
} }
}); });
this.headersElement.parentElement.addEventListener("dragover", function (event: DragEvent & { target: HTMLElement }) { this.headersElement.parentElement.addEventListener("dragover", function (event: DragEvent & {
target: HTMLElement
}) {
const it = this as HTMLElement; const it = this as HTMLElement;
if (event.dataTransfer.types.includes(Constants.SIYUAN_DROP_FILE)) { if (event.dataTransfer.types.includes(Constants.SIYUAN_DROP_FILE)) {
event.preventDefault(); event.preventDefault();
@ -193,7 +195,9 @@ export class Wnd {
const it = this as HTMLElement; const it = this as HTMLElement;
it.classList.remove("layout-tab-bars--drag"); it.classList.remove("layout-tab-bars--drag");
}); });
this.headersElement.parentElement.addEventListener("drop", function (event: DragEvent & { target: HTMLElement }) { this.headersElement.parentElement.addEventListener("drop", function (event: DragEvent & {
target: HTMLElement
}) {
const it = this as HTMLElement; const it = this as HTMLElement;
if (event.dataTransfer.types.includes(Constants.SIYUAN_DROP_FILE)) { if (event.dataTransfer.types.includes(Constants.SIYUAN_DROP_FILE)) {
// 文档树拖拽 // 文档树拖拽
@ -210,15 +214,15 @@ export class Wnd {
it.classList.remove("layout-tab-bars--drag"); it.classList.remove("layout-tab-bars--drag");
return; return;
} }
const tabId = event.dataTransfer.getData(Constants.SIYUAN_DROP_TAB); const tabData = JSON.parse(event.dataTransfer.getData(Constants.SIYUAN_DROP_TAB))
let oldTab = getInstanceById(tabId) as Tab; let oldTab = getInstanceById(tabData.id) as Tab;
const wnd = getInstanceById(it.parentElement.getAttribute("data-id")) as Wnd; const wnd = getInstanceById(it.parentElement.getAttribute("data-id")) as Wnd;
/// #if !BROWSER /// #if !BROWSER
if (!oldTab) { // 从主窗口拖拽到页签新窗口 if (!oldTab) { // 从主窗口拖拽到页签新窗口
if (wnd instanceof Wnd) { if (wnd instanceof Wnd) {
JSONToCenter(JSON.parse(event.dataTransfer.getData(Constants.SIYUAN_DROP_TABTOWINDOW)), wnd); JSONToCenter(tabData, wnd);
oldTab = wnd.children[wnd.children.length - 1]; oldTab = wnd.children[wnd.children.length - 1];
ipcRenderer.send(Constants.SIYUAN_CLOSETAB, tabId); ipcRenderer.send(Constants.SIYUAN_CLOSETAB, tabData.id);
it.querySelector("li[data-clone='true']").remove(); it.querySelector("li[data-clone='true']").remove();
wnd.switchTab(oldTab.headElement); wnd.switchTab(oldTab.headElement);
} }
@ -320,13 +324,13 @@ export class Wnd {
dragElement.classList.add("fn__none"); dragElement.classList.add("fn__none");
const targetWndElement = event.target.parentElement.parentElement; const targetWndElement = event.target.parentElement.parentElement;
const targetWnd = getInstanceById(targetWndElement.getAttribute("data-id")) as Wnd; const targetWnd = getInstanceById(targetWndElement.getAttribute("data-id")) as Wnd;
const tabId = event.dataTransfer.getData(Constants.SIYUAN_DROP_TAB); const tabData = JSON.parse(event.dataTransfer.getData(Constants.SIYUAN_DROP_TAB))
let oldTab = getInstanceById(tabId) as Tab; let oldTab = getInstanceById(tabData.id) as Tab;
/// #if !BROWSER /// #if !BROWSER
if (!oldTab) { // 从主窗口拖拽到页签新窗口 if (!oldTab) { // 从主窗口拖拽到页签新窗口
JSONToCenter(JSON.parse(event.dataTransfer.getData(Constants.SIYUAN_DROP_TABTOWINDOW)), this); JSONToCenter(tabData, this);
oldTab = this.children[this.children.length - 1]; oldTab = this.children[this.children.length - 1];
ipcRenderer.send(Constants.SIYUAN_CLOSETAB, tabId); ipcRenderer.send(Constants.SIYUAN_CLOSETAB, tabData.id);
} }
/// #endif /// #endif
if (!oldTab) { if (!oldTab) {
@ -370,7 +374,7 @@ export class Wnd {
return; return;
} }
if (targetWndElement.contains(document.querySelector(`[data-id="${tabId}"]`))) { if (targetWndElement.contains(document.querySelector(`[data-id="${tabData.id}"]`))) {
return; return;
} }
if (targetWnd) { if (targetWnd) {