From c762e53bf4e195815d9e22747551564742200306 Mon Sep 17 00:00:00 2001 From: Gregor Lohaus Date: Fri, 5 Jun 2026 11:57:41 +0200 Subject: [PATCH] make promoteActiveFloating -> toggleActiveFloating (works in reverse) --- .../com/gregor/jprototerm/Compositor.java | 4 ++-- src/main/java/com/gregor/jprototerm/Tab.java | 20 +++++++++---------- .../com/gregor/jprototerm/TerminalWindow.java | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/gregor/jprototerm/Compositor.java b/src/main/java/com/gregor/jprototerm/Compositor.java index d14bd55..88caa8c 100644 --- a/src/main/java/com/gregor/jprototerm/Compositor.java +++ b/src/main/java/com/gregor/jprototerm/Compositor.java @@ -180,11 +180,11 @@ public final class Compositor { layoutVersion++; } - public void promoteActiveFloating() { + public void toggleActiveFloating() { if (isEmpty()) { return; } - currentTab().promoteActiveFloating(); + currentTab().toggleActiveFloating(); layoutVersion++; } diff --git a/src/main/java/com/gregor/jprototerm/Tab.java b/src/main/java/com/gregor/jprototerm/Tab.java index 94ccdda..6e21f57 100644 --- a/src/main/java/com/gregor/jprototerm/Tab.java +++ b/src/main/java/com/gregor/jprototerm/Tab.java @@ -244,19 +244,19 @@ final class Tab implements AutoCloseable { } /** Promotes the active floating pane to a tiled pane, joining the tiled row. No-op otherwise. */ - void promoteActiveFloating() { - TerminalPane promote = active; - if (!floating.remove(promote)) { - return; // active pane is tiled (or there is none); nothing to promote - } - if (promote == lastFocusedFloating) { + void toggleActiveFloating() { + TerminalPane toggled = active; + if (floating.remove(toggled)) { lastFocusedFloating = floating.isEmpty() ? null : floating.get(floating.size() - 1); - } - tiled.add(promote); - if (floating.isEmpty()) { + tiled.add(toggled); floatingVisible = false; + setActive(toggled); + } else if (tiled.remove(toggled)) { + lastFocusedTiled = tiled.isEmpty() ? null : tiled.get(tiled.size() -1); + floating.add(toggled); + floatingVisible = true; + setActive(toggled); } - setActive(promote); } void closeActivePane() { diff --git a/src/main/java/com/gregor/jprototerm/TerminalWindow.java b/src/main/java/com/gregor/jprototerm/TerminalWindow.java index a950b77..8c970cb 100644 --- a/src/main/java/com/gregor/jprototerm/TerminalWindow.java +++ b/src/main/java/com/gregor/jprototerm/TerminalWindow.java @@ -129,7 +129,7 @@ final class TerminalWindow { compositor.nextFloatingPane(); event.consume(); } else if (config.keybindings().get("promote_floating").matches(event)) { - compositor.promoteActiveFloating(); + compositor.toggleActiveFloating(); event.consume(); } else if (config.keybindings().get("close_pane").matches(event)) { // Closing the last pane closes this window, via the compositor's onEmpty hook.