From c59dc30fca65a4f1fd592f9bd4541c77c8fe04da Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Thu, 8 Jan 2026 05:54:46 +0200 Subject: [PATCH] Fixed regression in table layout --- .../com/codename1/ui/table/TableLayout.java | 5 ++-- .../com/codename1/ui/table/TableTest.java | 29 ++++++++++++++++++- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/CodenameOne/src/com/codename1/ui/table/TableLayout.java b/CodenameOne/src/com/codename1/ui/table/TableLayout.java index fcf3cf46de..39a67fd128 100644 --- a/CodenameOne/src/com/codename1/ui/table/TableLayout.java +++ b/CodenameOne/src/com/codename1/ui/table/TableLayout.java @@ -573,11 +573,12 @@ private void placeComponent(boolean rtl, Constraint con, int x, int y, int width con.parent.setY(y + d); con.parent.setHeight(height - d); break; - default: - // Component.CENTER: + case Component.CENTER: con.parent.setY(y + d / 2); con.parent.setHeight(height - d); break; + default: + break; } } } diff --git a/maven/core-unittests/src/test/java/com/codename1/ui/table/TableTest.java b/maven/core-unittests/src/test/java/com/codename1/ui/table/TableTest.java index fbf0e9cd03..5f6fb40915 100644 --- a/maven/core-unittests/src/test/java/com/codename1/ui/table/TableTest.java +++ b/maven/core-unittests/src/test/java/com/codename1/ui/table/TableTest.java @@ -2,11 +2,13 @@ import com.codename1.junit.FormTest; import com.codename1.junit.UITestBase; +import com.codename1.ui.CN; import com.codename1.ui.Component; +import com.codename1.ui.Form; +import com.codename1.ui.Label; import com.codename1.ui.TextArea; import java.util.Comparator; -import java.util.Date; import java.lang.reflect.Method; import static org.junit.jupiter.api.Assertions.*; @@ -89,4 +91,29 @@ private Component findHeaderButton(Table table) { // Row 0 is header if includeHeader is true (default). return tl.getComponentAt(0, 0); } + + /** + * Test for a size regression bug in table layout discussed here: https://www.reddit.com/r/cn1/comments/1q6pmek/android_screen_out_of_ranges/ + */ + @FormTest + void testTableLayoutDefaultSizing() { + Form f = CN.getCurrentForm(); + TableLayout tl = new TableLayout(3, 2); + f.setLayout(tl); + f.setScrollable(false); + f.getContentPane().getAllStyles().setPadding(0, 0, 0, 0); + for(int iter = 0 ; iter < 6 ; iter++) { + Label l = new Label("T: " + iter); + l.getAllStyles().setMargin(0, 0, 0, 0); + f.addComponent(tl.createConstraint() + .hp(33) + .wp(50), l); + } + f.revalidate(); + + for(Component cmp : f.getContentPane()) { + assertTrue(cmp.getHeight() >= f.getContentPane().getHeight() / 100 * 32, "Height should be close to 33 percent"); + assertTrue(cmp.getWidth() >= f.getContentPane().getWidth() / 2 - 1, "Width should be 50%"); + } + } }