Feat/logical UI scaling - #437
Draft
flsobral wants to merge 116 commits into
Draft
Conversation
flsobral
force-pushed
the
feat/logical-ui-scaling
branch
from
August 4, 2026 00:34
b09a01a to
ce56078
Compare
flsobral
force-pushed
the
feat/logical-ui-scaling
branch
3 times, most recently
from
August 12, 2026 18:00
4a1ea52 to
f02a0f0
Compare
BREAKING CHANGE: recompiled applications use logical layout values by default. Set LayoutUnit.PIXEL on the root window to retain legacy pixel layout.
Use the visible AWT frame graphics configuration after peer creation and when it moves between displays.
Keep Android surface creation, destruction, pause/resume, and keyboard shifts outside the SCREEN_CHANGED event payload so TScreenSurface owns the committed screen configuration and pending lifecycle changes. Store EGL, native-window, contentScale, and fontScale state in the surface extension, remove sentinel-based globals, and convert touch coordinates from physical to logical units. Preserve SCREEN_CHANGED as a notification with zeroed legacy arguments while routing Graphics scale values from the active surface. Validated copyright headers, staged diff checks, and the Android Java compile task. Full native Android release and runtime semantic validation remain deferred.
flsobral
force-pushed
the
feat/logical-ui-scaling
branch
from
August 12, 2026 18:36
f02a0f0 to
24c5585
Compare
- preserve the orthogonal position in PathAnimation when explicitly requested - keep legacy PathAnimation behavior for existing consumers - fix TopMenu animations so they no longer override safe-area positioning - lay out SlidingWindow using its final safe-area-aware bounds before animating - start SlidingWindow offscreen without relaying out its contents - avoid briefly displaying SlidingWindow at its final position before the animation - keep SlidingWindow geometry consistent after screen resize and rotation
Exercise Window-based TopMenu, SlidingWindow, and SideMenu through the JavaSE preview renderer with portrait and asymmetric landscape insets, animation frames, reopen, resize, outside dismissal, and Back/Escape.
Keep screen dimensions, safe areas, layout, fonts, and input in logical units while deriving the Java Launcher framebuffer and pitch from density. Rasterize Control and Window primitives, text, images, copies, screenshots, alpha, fading, and raw pixel operations at the simulated content scale. Keep AWT monitor transforms and scale limited to host presentation. This changes Java simulator rendering only; native runtime behavior and packaged artifacts remain unchanged. Validate density 1, 2, and 3 with the focused simulator, graphics, layout, safe-area, and AWT suites. The full SDK suite retains the known order-dependent LegacySafeAreaVisualTest failure; its isolated rerun passes.
flsobral
force-pushed
the
feat/logical-ui-scaling
branch
from
August 12, 2026 18:41
24c5585 to
f725905
Compare
Keep the SLJIT JIT library private to the VM target and disable the SLJIT JIT option for Android native builds, where this configuration is not intended to be enabled. This prevents the JIT linkage from propagating and keeps Android builds on the supported non-JIT path. Validated copyright headers and the cached diff check. Full native and Android builds were deferred because this focused configuration change does not require a release build for commit validation.
Add a dedicated safe-area bridge header so Darwin event code no longer includes Window.h, avoiding duplicate SIP_* enumerators already provided by sipargs.h.
Run commit-message and copyright checks inside checkout-source so failed validation gates downstream builds without another runner.
Move the checkout-source native dependency matrix into a focused repository script while preserving sequential execution and environment overrides. Resolve default releases from depot-tools deps.yml instead of stale per-fetcher defaults.\n\nFetch seven target-specific Skia pairs without shared content, then invoke one release-wide shared installation. The dry-run contract proves 71 sequential fetch commands, seven Skia targets, one shared Skia operation, and one SQLite repository/tag identity across seven targets.
Make checkout-source package the exact provenance-marked depot-tools revision and native installations it prepared, then upload that current-run artifact for six platform consumers. Downstream jobs extract it at the canonical path instead of using actions/cache as their transport boundary.\n\nKeep the producer cache as optional acceleration and retain the existing SDK runtime artifact. Focused tests verify selected archive contents, exclude stale installs and Git metadata, validate extraction, and assert that every prior cache consumer now uses the producer artifact.
Record the completed cross-repository implementation, request-count evidence, checksum coverage, prepared artifact measurements, focused validation, and logical commit boundaries.\n\nLeave the state at the explicit publication handoff: depot-tools must be published through c5b80eb and TotalCross must later advance repo-2026.08.12 to an immutable reference before remote CI can validate the new workflow.
flsobral
force-pushed
the
feat/logical-ui-scaling
branch
from
August 12, 2026 23:50
426fe92 to
9b0972a
Compare
Point TotalCross at the immutable repo-2026.08.13 tag so builds consume the published depot-tools updates for verified native dependency artifacts. Validated the staged header and whitespace checks and confirmed the tag exists on the configured depot-tools origin. Platform builds and remote CI remain deferred.
flsobral
force-pushed
the
feat/logical-ui-scaling
branch
from
August 13, 2026 00:11
9b0972a to
6c9440d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #433