Fix StoredView missing child_view_ids delegation (build break)#12877
Merged
Conversation
#12633 introduced StoredView (a Gui/Tui enum wrapping Box<dyn AnyView>) and added inherent delegating methods for every neutral hook, but omitted child_view_ids. #12746 had already added a call to view.child_view_ids() in collect_transferable_subtree (app.rs:3306), which compiled fine against Box<dyn AnyView> but broke once the window.views map became HashMap<EntityId, StoredView>. Add the missing delegation so the build is green again. Co-Authored-By: Oz <oz-agent@warp.dev>
TUI views participate in the same structural parent/child graph as GUI views and could in principle hold out-of-graph child ViewHandles just like GUI views can. Add child_view_ids to the TuiView trait (defaulting to Vec::new()), surface it through AnyTuiView, and delegate from StoredView::Tui instead of hard-coding Vec::new(). Any TuiView that holds child handles outside the structural graph can now override the method and have those children picked up correctly by collect_transferable_subtree during window transfer. Co-Authored-By: Oz <oz-agent@warp.dev>
Contributor
|
I'm starting a first review of this pull request. You can view the conversation on Warp. I completed the review and no human review was requested for this pull request. Comment Powered by Oz |
vorporeal
approved these changes
Jun 21, 2026
Contributor
There was a problem hiding this comment.
Overview
This PR restores child_view_ids delegation across the TUI view abstraction and StoredView, matching the existing GUI ownership traversal hook used during view tree transfer.
Concerns
- No blocking correctness, security, or spec concerns found in the changed lines.
Verdict
Found: 0 critical, 0 important, 0 suggestions
Approve
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Fixes a build break caused by a semantic merge conflict between #12633 and #12746, and makes the fix properly extensible for TUI views.
Root cause:
#12633("Add TUI API surface to AppContext undertui") introducedStoredView— aGui/Tuienum replacingBox<dyn AnyView>as the value type ofWindow.views. It forwarded every neutral hook to the inner view exceptchild_view_ids.#12746("Cross Window Tab Dragging Bug Fixes") had already added a call toview.child_view_ids(self)incollect_transferable_subtree(app.rs:3306), which compiled fine againstBox<dyn AnyView>but broke once the map type changed. Because #12633 was not rebased on #12746, its CI was green; the breakage only surfaced on the dev release branch after both landed.Changes:
StoredView(window.rs): delegateschild_view_idsto the inner view for bothGuiandTuiarms, mirroring every other hook already present.TuiView/AnyTuiView(view/tui.rs): threadschild_view_idsthrough the full TUI trait stack — added toTuiView(defaulting toVec::new()), to theAnyTuiViewobject-safe interface, and to theimpl<T: TuiView> AnyTuiView for Tblanket impl. TUI views participate in the same structural parent/child graph as GUI views and could in principle hold out-of-graph childViewHandles; anyTuiViewthat does so can now overridechild_view_idsand have those children picked up correctly bycollect_transferable_subtreeduring window transfer.Linked Issue
N/A — this is a build-break hotfix.
ready-to-specorready-to-implement.Testing
./script/runcargo check -p warpui_coreandcargo clippy -p warpui_core --lib --all-features -- -D warningsboth pass.Agent Mode
Conversation: https://staging.warp.dev/conversation/edb30580-4cd8-4ca3-a230-a93f61bbc1f8
Run: https://oz.staging.warp.dev/runs/019eeaba-5589-7288-9a8f-4176d7a90cf2
This PR was generated with Oz.