Fix retained GUI scrollbar rendering crashes
Investigate the identical GuiVulkanPainter.ScrollBar / GuiRect width exceptions in client-20261029_092354.log and client-20261029_091853.log. Trace scrollbar layout, painting and input; fix the design cause without weakening rectangle invariants or adding exception recovery. Acceptance: reproduce the crash with a real GUI component regression test, show failure before the fix and success afterward, preserve scrollbar drawing/input alignment, and run relevant client/renderer validation. Reproduced the exact GuiRect / GuiVulkanPainter.ScrollBar exception with real layout + painting: populate a scroll view, clear its children, request scroll-to-end, then lay out and paint. Arrange skipped scroll layout when there were no visible children, retaining stale ContentHeight and float.MaxValue ScrollOffsetY; thumbTravel * ScrollOffsetY overflowed. Fix: run scroll arrangement even with zero visible children to resolve extent and offset before painting. Validation: expanded the existing scrollbar test to drive real layout across populated, cleared, fitting and repopulated content with scroll-to-end, plus painting and arrow input. It failed before the fix at GuiVulkanPainter.ScrollBar with the logged exception and passed afterward. Full renderer suite: 720 passed / 1 skipped. Full client suite: 4345 passed / 189 skipped. Client warnings-as-errors build: 0 warnings / 0 errors. Existing install/optional tests were skipped by their own prerequisites, not disabled. Reviewed normal arrangement, empty/hidden child filtering, virtual-text layout, layout invalidation, scrollbar painting and input consumers. Logs do not identify the exact active view or user action; original live in-game sequence remains unconfirmed. Committed as 172fa3a1e (fix: Resolve empty scroll views before painting), pushed branch fix/prevent-empty-scrollbar-crash targeting develop. PR #2912: https://git.project-rk.com/prk/engines/pulls/2912 (fix: Prevent empty scroll views from crashing GUI rendering), opened from fix/prevent-empty-scrollbar-crash into develop after authentication was restored.
Checklist
2 of 2 complete- Implement the root-cause fix, verify regression and relevant suites, and record any live-reproduction limitations.
- Reproduce the scrollbar crash through real retained GUI painting and trace the affected layout/input paths.
- Area
- Project Rubi-Ka
- Project
- engines
- Kind
- Bug
- Task ID
tsk_vk4sn32tbu- Updated