From df155d6e184deb3c56eee9457838c2e64209d602 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 22 Dec 2025 17:47:41 +0000 Subject: [PATCH 1/6] Fix Sheet native blocking issue by adding a background blocker component. This change adds a transparent Button component behind the Sheet in its container. This ensures that native components (like BrowserComponent) correctly detect that they are covered by another component when checking `getComponentAt(x, y)`, preventing unwanted event propagation. The blocker also handles the standard "tap to dismiss" behavior. --- CodenameOne/src/com/codename1/ui/Sheet.java | 40 +++++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/CodenameOne/src/com/codename1/ui/Sheet.java b/CodenameOne/src/com/codename1/ui/Sheet.java index 018413a1b5..c257fd63a5 100644 --- a/CodenameOne/src/com/codename1/ui/Sheet.java +++ b/CodenameOne/src/com/codename1/ui/Sheet.java @@ -478,7 +478,31 @@ public void paint(Graphics g, Rectangle rect) { cnt.revalidate(); } - if (cnt.getComponentCount() > 0) { + boolean foundSheet = false; + Component blocker = null; + for (Component child : cnt) { + if (child instanceof Sheet) { + foundSheet = true; + } else { + blocker = child; + } + } + + if (blocker == null) { + blocker = new Button(); + blocker.setUIID("Container"); + blocker.getAllStyles().setBgTransparency(0); + blocker.setPreferredSize(new com.codename1.ui.geom.Dimension(10000, 10000)); + ((Button)blocker).addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent evt) { + hide(duration); + } + }); + cnt.addComponent(0, BorderLayout.CENTER, blocker); + } + + if (foundSheet) { $(".Sheet", cnt).each(new ComponentClosure() { @Override public void call(Component c) { @@ -514,8 +538,18 @@ public void call(Component c) { } }); - Component existing = cnt.getComponentAt(0); - cnt.replace(existing, this, null); + Component existing = null; + for(Component c : cnt) { + if (c instanceof Sheet) { + existing = c; + break; + } + } + if (existing != null) { + cnt.replace(existing, this, null); + } else { + cnt.add(getPosition(), this); + } cnt.animateLayout(duration); } else { cnt.add(getPosition(), this); From 07a01480975fd57ca28600b5741e1212ad8e9003 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 22 Dec 2025 18:32:54 +0000 Subject: [PATCH 2/6] Fix Sheet native blocking issue by adding a background blocker component only when peers are present. This change conditionally adds a transparent Button component behind the Sheet in its container if Form.activePeerCount > 0. This ensures that native components (like BrowserComponent) correctly detect that they are covered by another component when checking `getComponentAt(x, y)`, preventing unwanted event propagation. The blocker is not added for lightweight-only forms to minimize overhead. --- CodenameOne/src/com/codename1/ui/Sheet.java | 32 +++++++++++++-------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/CodenameOne/src/com/codename1/ui/Sheet.java b/CodenameOne/src/com/codename1/ui/Sheet.java index c257fd63a5..b88a34475a 100644 --- a/CodenameOne/src/com/codename1/ui/Sheet.java +++ b/CodenameOne/src/com/codename1/ui/Sheet.java @@ -488,18 +488,26 @@ public void paint(Graphics g, Rectangle rect) { } } - if (blocker == null) { - blocker = new Button(); - blocker.setUIID("Container"); - blocker.getAllStyles().setBgTransparency(0); - blocker.setPreferredSize(new com.codename1.ui.geom.Dimension(10000, 10000)); - ((Button)blocker).addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent evt) { - hide(duration); - } - }); - cnt.addComponent(0, BorderLayout.CENTER, blocker); + boolean needsBlocker = Form.activePeerCount > 0; + if (needsBlocker) { + if (blocker == null) { + blocker = new Button(); + blocker.setUIID("Container"); + blocker.getAllStyles().setBgTransparency(0); + blocker.setPreferredSize(new com.codename1.ui.geom.Dimension(10000, 10000)); + ((Button) blocker).addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent evt) { + hide(duration); + } + }); + cnt.addComponent(0, BorderLayout.CENTER, blocker); + } + } else { + if (blocker != null) { + cnt.removeComponent(blocker); + blocker = null; + } } if (foundSheet) { From 98aa2a7d4ed0723aa559a66468b76e5c8205a21a Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 23 Dec 2025 02:48:33 +0000 Subject: [PATCH 3/6] Fix Sheet native blocking issue and update samples. 1. Conditionally add a background blocker in Sheet.java if Form.activePeerCount > 0. 2. Update KotlinUiTest.kt to demonstrate Sheet overlay. 3. Update BrowserComponentScreenshotTest.java to demonstrate Sheet over BrowserComponent. 4. Verify logic with unit tests (SheetPeerBlockingTest). --- .../tests/BrowserComponentScreenshotTest.java | 6 ++++++ .../examples/hellocodenameone/tests/KotlinUiTest.kt | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/BrowserComponentScreenshotTest.java b/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/BrowserComponentScreenshotTest.java index ff7c9e39de..fc8ccf22cc 100644 --- a/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/BrowserComponentScreenshotTest.java +++ b/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/BrowserComponentScreenshotTest.java @@ -2,6 +2,8 @@ import com.codename1.ui.BrowserComponent; import com.codename1.ui.Form; +import com.codename1.ui.Label; +import com.codename1.ui.Sheet; import com.codename1.ui.layouts.BorderLayout; import com.codename1.ui.util.UITimer; import com.codename1.util.SuccessCallback; @@ -56,6 +58,10 @@ public void onSucess(BrowserComponent.JSRef result) { return; } + Sheet sheet = new Sheet(null, "Overlay Sheet"); + sheet.getContentPane().add(new Label("This is a sheet covering part of the browser")); + sheet.show(); + UITimer.timer(2000, false, form, readyRunnable); readyRunnable = null; } diff --git a/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt b/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt index 239694cdde..dc57d8d6e1 100644 --- a/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt +++ b/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt @@ -7,6 +7,7 @@ import com.codename1.ui.Button import com.codename1.ui.CheckBox import com.codename1.ui.Container import com.codename1.ui.Label +import com.codename1.ui.Sheet import com.codename1.ui.Slider import com.codename1.ui.TextArea import com.codename1.ui.TextField @@ -51,6 +52,11 @@ class KotlinUiTest : BaseTest() { kotlinForm.add(accordion) kotlinForm.show() + + val sheet = Sheet(null, "Overlay Sheet") + sheet.contentPane.add(Label("This is a sheet covering part of the screen")) + sheet.show() + return true } } \ No newline at end of file From a404273392e51bc6619b6f988419b153ba568cb3 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 23 Dec 2025 06:00:48 +0000 Subject: [PATCH 4/6] Fix Sheet native blocking issue on iOS and cleanup logic. 1. Refine blocker identification using a client property to avoid accidental removal of other components. 2. Update KotlinUiTest.kt and BrowserComponentScreenshotTest.java to use sheet.show(0) to prevent potential animation-related hangs on iOS. 3. Verify core logic with SheetPeerBlockingTest. --- CodenameOne/src/com/codename1/ui/Sheet.java | 3 ++- .../hellocodenameone/tests/BrowserComponentScreenshotTest.java | 2 +- .../examples/hellocodenameone/tests/KotlinUiTest.kt | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CodenameOne/src/com/codename1/ui/Sheet.java b/CodenameOne/src/com/codename1/ui/Sheet.java index b88a34475a..1f3e350263 100644 --- a/CodenameOne/src/com/codename1/ui/Sheet.java +++ b/CodenameOne/src/com/codename1/ui/Sheet.java @@ -483,7 +483,7 @@ public void paint(Graphics g, Rectangle rect) { for (Component child : cnt) { if (child instanceof Sheet) { foundSheet = true; - } else { + } else if (Boolean.TRUE.equals(child.getClientProperty("SheetBlocker"))) { blocker = child; } } @@ -492,6 +492,7 @@ public void paint(Graphics g, Rectangle rect) { if (needsBlocker) { if (blocker == null) { blocker = new Button(); + blocker.putClientProperty("SheetBlocker", Boolean.TRUE); blocker.setUIID("Container"); blocker.getAllStyles().setBgTransparency(0); blocker.setPreferredSize(new com.codename1.ui.geom.Dimension(10000, 10000)); diff --git a/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/BrowserComponentScreenshotTest.java b/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/BrowserComponentScreenshotTest.java index fc8ccf22cc..e187e20de6 100644 --- a/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/BrowserComponentScreenshotTest.java +++ b/scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/BrowserComponentScreenshotTest.java @@ -60,7 +60,7 @@ public void onSucess(BrowserComponent.JSRef result) { Sheet sheet = new Sheet(null, "Overlay Sheet"); sheet.getContentPane().add(new Label("This is a sheet covering part of the browser")); - sheet.show(); + sheet.show(0); UITimer.timer(2000, false, form, readyRunnable); readyRunnable = null; diff --git a/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt b/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt index dc57d8d6e1..b2086ee911 100644 --- a/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt +++ b/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt @@ -55,7 +55,7 @@ class KotlinUiTest : BaseTest() { val sheet = Sheet(null, "Overlay Sheet") sheet.contentPane.add(Label("This is a sheet covering part of the screen")) - sheet.show() + sheet.show(0) return true } From 6ba5b569da7db8a5733f47932c1fac6eb2cf6394 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 23 Dec 2025 16:47:24 +0000 Subject: [PATCH 5/6] Fix Sheet native blocking issue by adding a conditional background blocker. 1. In `Sheet.java`: Add a transparent `Button` (blocker) to the Sheet container if `Form.activePeerCount > 0`. This intercepts pointer events for native peers. 2. Ensure blocker is removed if peers are no longer present. 3. Update `KotlinUiTest.kt` (lightweight only) and `BrowserComponentScreenshotTest.java` (with peer) to include Sheet display, verifying both scenarios. 4. Use `sheet.show(0)` in tests to prevent animation-related instability. --- CodenameOne/src/com/codename1/ui/Sheet.java | 3 ++- .../examples/hellocodenameone/tests/KotlinUiTest.kt | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CodenameOne/src/com/codename1/ui/Sheet.java b/CodenameOne/src/com/codename1/ui/Sheet.java index 1f3e350263..abf843918b 100644 --- a/CodenameOne/src/com/codename1/ui/Sheet.java +++ b/CodenameOne/src/com/codename1/ui/Sheet.java @@ -495,7 +495,8 @@ public void paint(Graphics g, Rectangle rect) { blocker.putClientProperty("SheetBlocker", Boolean.TRUE); blocker.setUIID("Container"); blocker.getAllStyles().setBgTransparency(0); - blocker.setPreferredSize(new com.codename1.ui.geom.Dimension(10000, 10000)); + int size = Math.max(CN.getDisplayWidth(), CN.getDisplayHeight()) * 2; + blocker.setPreferredSize(new com.codename1.ui.geom.Dimension(size, size)); ((Button) blocker).addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent evt) { diff --git a/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt b/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt index b2086ee911..e767d94070 100644 --- a/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt +++ b/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt @@ -12,6 +12,7 @@ import com.codename1.ui.Slider import com.codename1.ui.TextArea import com.codename1.ui.TextField import com.codename1.ui.layouts.BoxLayout +import com.codename1.ui.util.UITimer class KotlinUiTest : BaseTest() { override fun runTest(): Boolean { From cf798738f7ba85c7a311cba82efdfa322c7330a6 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Wed, 24 Dec 2025 09:25:00 +0200 Subject: [PATCH 6/6] Refined kotlin sheet logic and updated screenshots on Linux --- .../android/screenshots/BrowserComponent.png | Bin 16029 -> 21815 bytes scripts/android/screenshots/kotlin.png | Bin 17402 -> 22451 bytes .../hellocodenameone/tests/KotlinUiTest.kt | 29 ++++++++++++------ scripts/run-ios-ui-tests.sh | 14 +++++++++ 4 files changed, 33 insertions(+), 10 deletions(-) diff --git a/scripts/android/screenshots/BrowserComponent.png b/scripts/android/screenshots/BrowserComponent.png index 11cfc7922a9f2e0c574ec5324e8cc1d2383f569d..e9414addfc621ce17684aaf031f08030787e87f5 100644 GIT binary patch literal 21815 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 CiucO^ literal 16029 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

(zN?X<;V>c;_Deg#1W0lNf z-~T9F&a+B@Li7+$2>}VoKbrzJ@EM>%p*Nt31Le-n>-2cHt+VqRbk?X76b^#kaeZjE z3#6YShglW0DFD%2gs(;sD?T|n0{YR6?CiEpJt#?nz9(Li$J>3nbslAR81FNd@S1hR zUjc-I(#7@%+fUAe)falBT&F7Fl$$y`Nx{C}49;Qn#KFAcnX-4GHf27?9^ou9%n-4^ zicE1}RO^|ZPXx9g3`~L;(FD!+YW&>VT2x*hF9KZ@D+p=rx51K8aP#U@et_nOyKAkQ z>QWYB56lGVz&5M9-~gR3$}phA&*`fv9J}|A~#g6*%-F18lRxbsQ@uBJ&T(1MyA5M|U~fm|z;W+gLv&mnE+^Y*h*`>m6&fJ8$LA^*{bKQ9! zdQ%95xTj<=5NQ6FfBpC(BsO&33LfpvzRU4gG$eHS>!PPWbVJT_$Zu)p{{*x7k8?~F zZ!)sA9qN_rw~@)vTUw)dT>ncmZ~qN{?ZJQKKmS|*hKB$DU+TeWL;xi*La65@f7y-g S8~pwbMERzgLctA_fd2~tq!b_k diff --git a/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt b/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt index e767d94070..e30788acdf 100644 --- a/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt +++ b/scripts/hellocodenameone/common/src/main/kotlin/com/codenameone/examples/hellocodenameone/tests/KotlinUiTest.kt @@ -3,20 +3,19 @@ package com.codenameone.examples.hellocodenameone.tests import com.codename1.components.Accordion import com.codename1.components.MultiButton import com.codename1.components.Switch -import com.codename1.ui.Button -import com.codename1.ui.CheckBox -import com.codename1.ui.Container -import com.codename1.ui.Label -import com.codename1.ui.Sheet -import com.codename1.ui.Slider -import com.codename1.ui.TextArea -import com.codename1.ui.TextField +import com.codename1.testing.TestUtils +import com.codename1.ui.* import com.codename1.ui.layouts.BoxLayout -import com.codename1.ui.util.UITimer class KotlinUiTest : BaseTest() { override fun runTest(): Boolean { - val kotlinForm = createForm("Kotlin", BoxLayout.y(), "kotlin") + var called = BooleanArray(1) + val kotlinForm = object : Form("Kotlin", BoxLayout.y()) { + override fun onShowCompleted() { + super.onShowCompleted() + called[0] = true + } + } kotlinForm.addAll( Label("Kotlin UI Test Components"), Button("Kotlin Button"), @@ -58,6 +57,16 @@ class KotlinUiTest : BaseTest() { sheet.contentPane.add(Label("This is a sheet covering part of the screen")) sheet.show(0) + var timeout = 100; + while (sheet.parent == null && !called[0]) { + TestUtils.waitFor(10) + timeout-- + TestUtils.assertNotEqual(0, timeout) + } + + Cn1ssDeviceRunnerHelper.emitCurrentFormScreenshot("kotlin") + done() + return true } } \ No newline at end of file diff --git a/scripts/run-ios-ui-tests.sh b/scripts/run-ios-ui-tests.sh index 20d2490376..7a30b3ae9d 100755 --- a/scripts/run-ios-ui-tests.sh +++ b/scripts/run-ios-ui-tests.sh @@ -548,6 +548,20 @@ LOG_CHUNKS="$(cn1ss_count_chunks "$TEST_LOG")"; LOG_CHUNKS="${LOG_CHUNKS//[^0-9] ri_log "Chunk counts -> simulator log: ${LOG_CHUNKS}" if [ "${LOG_CHUNKS:-0}" = "0" ]; then + COLLECTED_LOG_DIR="$ARTIFACTS_DIR/simulator-logs" + ensure_dir "$COLLECTED_LOG_DIR" + DEBUG_LOG="$COLLECTED_LOG_DIR/device-runner-debug.log" + if [ -n "$SIM_DEVICE_ID" ]; then + ri_log "Capturing simulator debug log to $DEBUG_LOG" + xcrun simctl spawn "$SIM_DEVICE_ID" log show --style syslog --last 30m > "$DEBUG_LOG" 2>/dev/null || true + else + ri_log "Capturing host simulator debug log to $DEBUG_LOG" + log show --style syslog --last 30m > "$DEBUG_LOG" 2>/dev/null || true + fi + CRASH_LOG_DIR="$COLLECTED_LOG_DIR/crash-reports" + ensure_dir "$CRASH_LOG_DIR" + ri_log "Collecting recent crash reports into $CRASH_LOG_DIR" + find "$HOME/Library/Logs/DiagnosticReports" -type f -name '*.crash' -mmin -120 -print -exec cp {} "$CRASH_LOG_DIR" \; 2>/dev/null || true ri_log "STAGE:MARKERS_NOT_FOUND -> simulator output did not include CN1SS chunks" ri_log "---- CN1SS lines (if any) ----" (grep "CN1SS:" "$TEST_LOG" || true) | sed 's/^/[CN1SS] /'