From 25eb6966c473a63050bfc478d84a423dc39d6927 Mon Sep 17 00:00:00 2001 From: hstyi Date: Fri, 7 Feb 2025 14:11:07 +0800 Subject: [PATCH] feat: external release to create a new window (#162) --- src/main/kotlin/app/termora/MyTabbedPane.kt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/app/termora/MyTabbedPane.kt b/src/main/kotlin/app/termora/MyTabbedPane.kt index e271fac..c0db98b 100644 --- a/src/main/kotlin/app/termora/MyTabbedPane.kt +++ b/src/main/kotlin/app/termora/MyTabbedPane.kt @@ -75,6 +75,7 @@ class MyTabbedPane : FlatTabbedPane() { private var terminalTab: TerminalTab? = null private var isDragging = false private var lastVisitTabIndex = -1 + private var releasedPoint = Point() override fun mousePressed(e: MouseEvent) { val index = indexAtLocation(e.x, e.y) @@ -137,8 +138,15 @@ class MyTabbedPane : FlatTabbedPane() { } // 如果是取消,那么不需要移动到其它窗口 - val c = if (cancelled) null else getTopMostWindowUnderMouse() - if (c != owner && c is TermoraFrame) { + val c = if (cancelled) owner else getTopMostWindowUnderMouse() + + // 如果等于 null 表示在空地方释放,那么单独一个窗口 + if (c == null) { + val window = TermoraFrameManager.getInstance().createWindow() + dragToAnotherWindow(window) + window.location = releasedPoint + window.isVisible = true + } else if (c != owner && c is TermoraFrame) { // 如果在某个窗口内释放,那么就移动到某个窗口内 dragToAnotherWindow(c) } else { val tab = this.terminalTab @@ -161,6 +169,7 @@ class MyTabbedPane : FlatTabbedPane() { } override fun mouseReleased(e: MouseEvent) { + releasedPoint = e.point stopDrag() }