From c3f651b6c9b317b04d2036a69c2844947740efaa Mon Sep 17 00:00:00 2001 From: Vanessa Date: Fri, 27 Jan 2023 18:09:34 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E9=A1=B5=E7=AD=BE=E6=8B=96=E6=8B=BD=20?= =?UTF-8?q?https://github.com/siyuan-note/siyuan/issues/2955?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/constants.ts | 1 + app/src/layout/Tab.ts | 4 ++++ app/src/layout/Wnd.ts | 11 +++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/src/constants.ts b/app/src/constants.ts index 5615f4b46..b48d551b5 100644 --- a/app/src/constants.ts +++ b/app/src/constants.ts @@ -17,6 +17,7 @@ export abstract class Constants { // drop 事件 public static readonly SIYUAN_DROP_FILE: string = "application/siyuan-file"; 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"; // 渲染进程调主进程 diff --git a/app/src/layout/Tab.ts b/app/src/layout/Tab.ts index ef44fc4ae..1435f093d 100644 --- a/app/src/layout/Tab.ts +++ b/app/src/layout/Tab.ts @@ -9,6 +9,7 @@ import {unicode2Emoji} from "../emoji"; import {fetchPost} from "../util/fetch"; import {showTooltip} from "../dialog/tooltip"; import {isTouchDevice} from "../util/functions"; +import {layoutToJSON} from "./util"; export class Tab { public parent: Wnd; @@ -76,6 +77,9 @@ export class Tab { if (tabElement) { event.dataTransfer.setData("text/html", tabElement.outerHTML); event.dataTransfer.setData(Constants.SIYUAN_DROP_TAB, this.id); + const modeJSON = {} + layoutToJSON(this, modeJSON) + event.dataTransfer.setData(Constants.SIYUAN_DROP_TABTOWINDOW, JSON.stringify(modeJSON)); event.dataTransfer.dropEffect = "move"; tabElement.style.opacity = "0.1"; window.siyuan.dragElement = this.headElement; diff --git a/app/src/layout/Wnd.ts b/app/src/layout/Wnd.ts index d6a62f666..261ea654e 100644 --- a/app/src/layout/Wnd.ts +++ b/app/src/layout/Wnd.ts @@ -2,7 +2,7 @@ import {Layout} from "./index"; import {genUUID} from "../util/genID"; import { getInstanceById, - getWndByLayout, + getWndByLayout, JSONToCenter, newCenterEmptyTab, resizeTabs, setPanelFocus, @@ -297,7 +297,11 @@ export class Wnd { const targetWndElement = event.target.parentElement.parentElement; const targetWnd = getInstanceById(targetWndElement.getAttribute("data-id")) as Wnd; const tabId = event.dataTransfer.getData(Constants.SIYUAN_DROP_TAB); - const oldTab = getInstanceById(tabId) as Tab; + let oldTab = getInstanceById(tabId) as Tab; + if (isWindow() && !oldTab) { // 从主窗口拖拽到页签新窗口 + JSONToCenter(JSON.parse(event.dataTransfer.getData(Constants.SIYUAN_DROP_TABTOWINDOW)), this); + oldTab = this.children[this.children.length - 1]; + } if (oldTab.model instanceof Asset) { // https://github.com/siyuan-note/siyuan/issues/6890 const pdfViewerElement = oldTab.model.element.querySelector("#viewerContainer"); @@ -636,6 +640,9 @@ export class Wnd { } }); } + /// #if !BROWSER + setTabPosition(); + /// #endif return; } if (item.headElement) {