This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch feature/CAMEL-23672-tui-diagram
in repository https://gitbox.apache.org/repos/asf/camel.git

commit c5780a320976991cf6a972d8d88db85a3ac363c2
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Jun 4 11:24:02 2026 +0200

    CAMEL-23672: camel-tui - Reset routes tab diagram on tab switch and fix 
async snap-back
    
    Pressing 4 for routes tab now always shows the table, closing any open
    diagram. Pressing d resets diagram state fully before loading. Async
    diagram load callbacks no longer re-enable showDiagram if the user
    closed it while loading, preventing the snap-back to diagram mode.
    
    Signed-off-by: Claus Ibsen <[email protected]>
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../camel/dsl/jbang/core/commands/tui/CamelMonitor.java   |  3 +++
 .../camel/dsl/jbang/core/commands/tui/DiagramSupport.java | 15 ++++++---------
 .../camel/dsl/jbang/core/commands/tui/RoutesTab.java      |  3 ++-
 3 files changed, 11 insertions(+), 10 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
index f4fd4a981036..8d9b4c401823 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
@@ -872,6 +872,9 @@ public class CamelMonitor extends CamelCommand {
             refreshLogData();
             logTab.onTabSelected();
         }
+        if (tab == TAB_ROUTES && routesTab != null && 
routesTab.isShowDiagram()) {
+            routesTab.closeDiagram();
+        }
         if (tab == TAB_DIAGRAM) {
             diagramTab.onTabSelected();
         }
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramSupport.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramSupport.java
index d418dd15937b..72c360c6f8be 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramSupport.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DiagramSupport.java
@@ -1159,6 +1159,9 @@ class DiagramSupport {
             return;
         }
         ctx.runner.runOnRenderThread(() -> {
+            if (!showDiagram) {
+                return;
+            }
             topologyLayout = finalTopoResult;
             topologyNodeWidth = finalNodeW;
             topologyNodes = finalTopoNodes;
@@ -1192,8 +1195,6 @@ class DiagramSupport {
                     selectedNodeIndex = -1;
                 }
             }
-
-            showDiagram = true;
         });
     }
 
@@ -1410,7 +1411,9 @@ class DiagramSupport {
             return;
         }
         ctx.runner.runOnRenderThread(() -> {
-            boolean wasShowing = showDiagram;
+            if (!showDiagram) {
+                return;
+            }
             lines = resultLines;
             counterPositions = positions;
             routeTitleRows = titleRows;
@@ -1438,12 +1441,6 @@ class DiagramSupport {
             } else if (resultNodeBoxes.isEmpty()) {
                 selectedNodeIndex = -1;
             }
-
-            if (!wasShowing) {
-                scrollY = 0;
-                scrollX = 0;
-            }
-            showDiagram = true;
         });
     }
 
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/RoutesTab.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/RoutesTab.java
index e23ac133d74d..32720c47722f 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/RoutesTab.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/RoutesTab.java
@@ -697,6 +697,7 @@ class RoutesTab implements MonitorTab {
         topologyMode = true;
         drillDownRouteId = null;
         routeNavigationStack.clear();
+        diagram.reset();
         diagram.setTopologyMode(true);
 
         // Pre-select the currently highlighted route from the table
@@ -708,7 +709,7 @@ class RoutesTab implements MonitorTab {
         loadDiagram(true);
     }
 
-    private void closeDiagram() {
+    void closeDiagram() {
         topologyMode = true;
         drillDownRouteId = null;
         routeNavigationStack.clear();

Reply via email to