Pin the scrollbar contract on a grid whose bars actually realize - #554
Conversation
The existing DataGrid case turns out to assert AllowAutoHide on bars that never apply their template, because the grid it builds has no columns and Avalonia's DataGrid does not auto-generate them — so no row realizes and nothing overflows. The bound flag it checks is still meaningful, and it stays exactly as it was; its construction comment now says what is actually happening instead of claiming a real grid. The new sibling gives a grid columns, makes it overflow both ways, and pins the state every grid in the app actually runs in: templated bars exist, each keeps AllowAutoHide from the attached property the App.axaml rule sets (12 binds it in-template), and the vertical bar is visible. Zero templated bars realize without columns, so the NotEmpty assertion alone separates the two cases. Fixes #548 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Sr43FouJ6RizUyoWQeR5FX
|
Reviewed. This is a test-only change to The new No correctness or coverage issues found — looks good to merge. |
Fixes #548. Keeps the existing flag-only contract test untouched (its assertion is real — the AllowAutoHide value is template-bound, not assigned on apply), corrects its stale construction comment, and adds the columns-bearing sibling: a grid that overflows both axes, pinning that templated bars realize at all, keep AllowAutoHide through 12's template binding, and the vertical bar reports visible. This is the part of the #464 slim-rail contract the suite could never see before, short of the geometry itself (which stays a manual check by design — no Skia). Full suite 712 passed / 1 known skip.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Sr43FouJ6RizUyoWQeR5FX