Skip to content

Leave a row its list has let go of out of the control view (#1292) - #1301

Merged
imojenisys merged 2 commits into
mainfrom
fix/1292-dump-recycled-row
Oct 21, 2026
Merged

imojenisys merged 2 commits into
mainfrom
fix/1292-dump-recycled-row

Conversation

@imojenisys

Copy link
Copy Markdown
Contributor

Closes #1292.

Some lists bind their rows' visibility to the item, as the Properties window's Categorized list does. Once such a list's virtualizing panel has scrolled, it keeps a recycled ListBoxItem in the visual tree. That row has no owner and no index, still holds the last item it showed, and shows whenever that item does. #1256 stopped select matching one. The dump still listed it as a row, a second copy of an item or a row for one out of view, and a path or an #id reached it.

Review

One adversarial reviewer, who ran 12 headless probes, including a switch to dump each window with and without the check. No regressions in any IDE view shape.

Finding Severity Outcome
Released hid containers no list generated (a ListBoxItem as a template root, or as content), with their subtree Low–Med Fixed: only an items panel's own children; test with a template-root container
#AutomationId paths still reached the released row Low–Med Fixed: the id search skips it too; test
PathWithin gave the list's path for a control inside a released row Low Reachable only through the #id route, now closed
Items declared in Items and scrolled out of view are now left out Low Consistent with generated rows out of view; noted in the archive
The test didn't cover the issue's actual case, a released row that shows Low Fixed: the row's item is made visible again before the dump
Released reads true during ContainerPrepared, and the dump lists rows in visual order Info No MCP call runs during layout; the order is unrelated and existing

The reviewer confirmed these were unaffected:

  • nested trees, expanding and collapsing
  • tab controls, the dock's tab strips, combo dropdowns and menus
  • the real Locals tree
  • every kind of collection change
  • performance

Mutation-checked: removing the collector's skip, the #id skip or the items-panel condition each fails a test. Unit 3086 and integration 1439 pass.

🤖 Generated with Claude Code

imojenisys and others added 2 commits October 21, 2026 04:38
A recycled ListBoxItem whose visibility is bound to its item stays in the
visual tree, showing the item it last held. The dump listed it as a row, and a
path to it resolved. The collector the dump and resolution share now leaves it
out, by #1256's Released test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… search, and test a released row that shows (#1292 review)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

dump_visual_tree may list a recycled list row as a second copy of an item

1 participant