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

ahuber pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/main by this push:
     new fbf5cc6600e CAUSEWAY-2297: makes tabGroup's collapseIfOne an opt-out
fbf5cc6600e is described below

commit fbf5cc6600e1c77bbd82aa5ef618d2a7209528bd
Author: Andi Huber <[email protected]>
AuthorDate: Thu Oct 23 13:41:01 2025 +0200

    CAUSEWAY-2297: makes tabGroup's collapseIfOne an opt-out
---
 .../services/grid/bootstrap/CollapseIfOneTabProcessor.java   | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/grid/bootstrap/CollapseIfOneTabProcessor.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/grid/bootstrap/CollapseIfOneTabProcessor.java
index 50c9b84bdcd..7263000b5e8 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/grid/bootstrap/CollapseIfOneTabProcessor.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/grid/bootstrap/CollapseIfOneTabProcessor.java
@@ -18,6 +18,8 @@
  */
 package org.apache.causeway.core.metamodel.services.grid.bootstrap;
 
+import java.util.Optional;
+
 import org.apache.causeway.applib.layout.grid.bootstrap.BSCol;
 import org.apache.causeway.applib.layout.grid.bootstrap.BSGrid;
 import org.apache.causeway.applib.layout.grid.bootstrap.BSTabGroup;
@@ -33,11 +35,17 @@ public void run() {
         bsGrid.visit(new BSGrid.VisitorAdapter() {
             @Override
             public void visit(BSTabGroup bsTabGroup) {
-                if(bsTabGroup.isCollapseIfOne() == null
-                        || !bsTabGroup.isCollapseIfOne()
+                var isCollapseIfOne = 
Optional.ofNullable(bsTabGroup.isCollapseIfOne())
+                    .map(boolean.class::cast)
+                    .orElse(true); // opt-out semantics: absence of the 
attribute results in participation
+
+                if(!isCollapseIfOne
                         || bsTabGroup.getTabs().size()>1) {
                     return;
                 }
+
+                if(!isCollapseIfOne) return;
+
                 var parent = (BSCol) bsTabGroup.getOwner();
                 parent.getTabGroups().remove(bsTabGroup);
                 // relocate rows from tab to owning col

Reply via email to