mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-11-01 10:21:59 +00:00
A group row's text column (and an info row's key) grows into what the controls on its right leave, and LVGL lays out children before their parent, so its labels were first measured 1 px wide; LVGL also works out a new label's height at its old width (0) before the real one. Each height that changed then took another pass up the screen: 4-6 passes per screen. rowsFit(), run before a frame's layout (LV_EVENT_REFR_START) and by layoutNow() in place of every explicit lv_obj_update_layout(), gives each new row's growing child the width the flex will give it, worked out from the other children's styles and text, and labelFit() measures wrapping labels at their real width up front. The grow stays, so a control that can't be sized ahead only falls back to the old passes. Layout on the device: Display page 34 -> 24 ms, Bot 33 -> 18, Quick 37 -> 22, Radio 26 -> 18, Diagnostics 20 -> 12. Sim screenshots of 26 screens unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>