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) {