Ensure that new view observers are called by WindowContext::replace_root_view (#3730)
Max Brunsfeld
created
This fixes a bug where the window got into a bad, non-interactive state
when opening a project from an empty window.
Change summary
crates/gpui2/src/window.rs | 9 ++-------
crates/workspace2/src/workspace2.rs | 5 -----
2 files changed, 2 insertions(+), 12 deletions(-)
Detailed changes
@@ -1926,14 +1926,9 @@ impl VisualContext for WindowContext<'_> {
where
V: 'static + Render,
{
- let slot = self.app.entities.reserve();
- let view = View {
- model: slot.clone(),
- };
- let mut cx = ViewContext::new(&mut *self.app, &mut *self.window, &view);
- let entity = build_view(&mut cx);
- self.entities.insert(slot, entity);
+ let view = self.build_view(build_view);
self.window.root_view = Some(view.clone().into());
+ self.notify();
view
}
@@ -600,11 +600,6 @@ impl Workspace {
let modal_layer = cx.build_view(|_| ModalLayer::new());
- // todo!()
- // cx.update_default_global::<DragAndDrop<Workspace>, _, _>(|drag_and_drop, _| {
- // drag_and_drop.register_container(weak_handle.clone());
- // });
-
let mut active_call = None;
if cx.has_global::<Model<ActiveCall>>() {
let call = cx.global::<Model<ActiveCall>>().clone();