From 6e802def4cbd075d43f41f0d31b23ab30908cc7e Mon Sep 17 00:00:00 2001 From: crschnick Date: Thu, 12 Feb 2026 04:58:59 +0000 Subject: [PATCH] Docking fixes --- .../file/BrowserFileSystemTabModel.java | 11 +++++++++-- .../app/terminal/TerminalDockBrowserComp.java | 12 +++++++----- .../app/terminal/TerminalDockHubComp.java | 12 +++++++----- .../xpipe/app/terminal/TerminalDockView.java | 18 +++++++++--------- 4 files changed, 32 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileSystemTabModel.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileSystemTabModel.java index f3818bc7c..32f41fbb4 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileSystemTabModel.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileSystemTabModel.java @@ -44,6 +44,8 @@ import java.util.stream.Stream; @Getter public final class BrowserFileSystemTabModel extends BrowserStoreSessionTab { + private static boolean wasTerminalDocked; + private final Property filter = new SimpleStringProperty(); private final BrowserFileListModel fileList; private final ReadOnlyObjectWrapper currentPath = new ReadOnlyObjectWrapper<>(); @@ -580,19 +582,24 @@ public final class BrowserFileSystemTabModel extends BrowserStoreSessionTab request.equals(s.getRequest()) && s.getTerminal().isRunning()) - .map(s -> s.getTerminal().controllable()) - .flatMap(Optional::stream) + var others = terminalInstances.stream() + .filter(terminal -> terminal.getTerminalProcess().isAlive()) + .filter(terminal -> TerminalView.get().getSessions().stream() + .noneMatch(shellSession -> shellSession.getRequest().equals(request) && + shellSession.getTerminal().equals(terminal))) .toList(); - for (int i = 0; i < tv.size() - 1; i++) { - closeTerminal(tv.get(i)); + for (ControllableTerminalSession other : others) { + closeTerminal(other); } - return tv.size() > 1; + return others.size() > 0; } public synchronized void closeTerminal(ControllableTerminalSession terminal) {