Browse Source
* test(VirtualizingStackPanel): cover focused item virtualization A focused item remains attached so keyboard focus can be preserved after it leaves the realized range. It must nevertheless stop rendering until it is realized again; otherwise an estimated position can surface it in the viewport. * fix(VirtualizingStackPanel): hide cached focused items A focused container stays attached after it leaves the realized range so keyboard focus survives. Its estimated position can overlap the viewport when item sizes vary, causing it to render and receive pointer input as a ghost item.\n\nSuppress rendering and hit testing while the container is cached, then restore its original state before re-realization or recycling. This preserves focus and template-provided opacity. * fix(VirtualizingStackPanel): restore current focused container state Focused-container suppression previously replayed the opacity and hit-test values observed when virtualization began. That could hide updates from bindings, styles, or application code while the container was retained.\n\nUse disposable animation-priority overrides for the temporary suppression so disposing them reveals the property's current underlying value. * fix(VirtualizingStackPanel): keep retained focused container out of the viewport The container of a focused item that leaves the realized range is retained to preserve keyboard focus, and arranged at a position estimated from the average realized element size. With differing item sizes that estimate can place the container so that it overlaps the viewport, where it renders as a ghost item and intercepts pointer input (#17935). An unrealized item before the realized range always ends at or before the range's start, and one after it always starts at or after the range's end. Clamp the estimated arrange position to that invariant so the retained container can never overlap the realized elements, replacing the previous approach of masking the container with animation-priority opacity and hit-test overrides.pull/22027/head
committed by
GitHub
2 changed files with 54 additions and 2 deletions
Loading…
Reference in new issue