Pass `WindowContext` to `ViewHandle::is_focused`

Antonio Scandurra created

Change summary

crates/copilot_button/src/copilot_button.rs | 2 +-
crates/gpui/src/app.rs                      | 8 ++------
crates/project_panel/src/project_panel.rs   | 7 +++++--
3 files changed, 8 insertions(+), 9 deletions(-)

Detailed changes

crates/copilot_button/src/copilot_button.rs 🔗

@@ -161,7 +161,7 @@ impl View for CopilotButton {
                             ));
                             let window_id = cx.window_id();
                             let task = task.to_owned();
-                            cx.spawn(|this, mut cx| async move {
+                            cx.spawn_weak(|_this, mut cx| async move {
                                 task.await;
                                 cx.update(|cx| {
                                     if let Some(copilot) = Copilot::global(cx) {

crates/gpui/src/app.rs 🔗

@@ -3928,12 +3928,8 @@ impl<T: View> ViewHandle<T> {
         });
     }
 
-    #[cfg(any(test, feature = "test-support"))]
-    pub fn is_focused(&self, cx: &AppContext) -> bool {
-        cx.read_window(self.window_id, |cx| {
-            cx.focused_view_id() == Some(self.view_id)
-        })
-        .unwrap_or(false)
+    pub fn is_focused(&self, cx: &WindowContext) -> bool {
+        cx.focused_view_id() == Some(self.view_id)
     }
 }
 

crates/project_panel/src/project_panel.rs 🔗

@@ -1549,7 +1549,7 @@ mod tests {
         .await;
 
         let project = Project::test(fs.clone(), ["/root1".as_ref(), "/root2".as_ref()], cx).await;
-        let (_, workspace) = cx.add_window(|cx| Workspace::test_new(project.clone(), cx));
+        let (window_id, workspace) = cx.add_window(|cx| Workspace::test_new(project.clone(), cx));
         let panel = workspace.update(cx, |_, cx| ProjectPanel::new(project, cx));
 
         select_path(&panel, "root1", cx);
@@ -1571,7 +1571,10 @@ mod tests {
         // Add a file with the root folder selected. The filename editor is placed
         // before the first file in the root folder.
         panel.update(cx, |panel, cx| panel.new_file(&NewFile, cx));
-        assert!(panel.read_with(cx, |panel, cx| panel.filename_editor.is_focused(cx)));
+        cx.read_window(window_id, |cx| {
+            let panel = panel.read(cx);
+            assert!(panel.filename_editor.is_focused(cx));
+        });
         assert_eq!(
             visible_entries_as_strings(&panel, 0..10, cx),
             &[