Use AppContext::update when updating windows so we handle effects

Nathan Sobo created

Change summary

crates/gpui/src/app.rs | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)

Detailed changes

crates/gpui/src/app.rs 🔗

@@ -2112,13 +2112,15 @@ impl BorrowWindowContext for AppContext {
     where
         F: FnOnce(&mut WindowContext) -> T,
     {
-        let mut window = self.windows.remove(&handle)?;
-        let mut window_context = WindowContext::mutable(self, &mut window, handle);
-        let result = f(&mut window_context);
-        if !window_context.removed {
-            self.windows.insert(handle, window);
-        }
-        Some(result)
+        self.update(|cx| {
+            let mut window = cx.windows.remove(&handle)?;
+            let mut window_context = WindowContext::mutable(cx, &mut window, handle);
+            let result = f(&mut window_context);
+            if !window_context.removed {
+                cx.windows.insert(handle, window);
+            }
+            Some(result)
+        })
     }
 
     fn update_window_optional<T, F>(&mut self, handle: AnyWindowHandle, f: F) -> Option<T>