Introduce a `WindowContext::focus` method that implies the window id

Antonio Scandurra created

Change summary

crates/context_menu/src/context_menu.rs | 3 +--
crates/gpui/src/app.rs                  | 9 +++------
crates/gpui/src/app/window.rs           | 4 ++++
3 files changed, 8 insertions(+), 8 deletions(-)

Detailed changes

crates/context_menu/src/context_menu.rs 🔗

@@ -244,8 +244,7 @@ impl ContextMenu {
             let show_count = self.show_count;
             cx.defer(move |this, cx| {
                 if cx.handle().is_focused(cx) && this.show_count == show_count {
-                    let window_id = cx.window_id();
-                    (**cx).focus(window_id, this.previously_focused_view_id.take());
+                    (**cx).focus(this.previously_focused_view_id.take());
                 }
             });
         } else {

crates/gpui/src/app.rs 🔗

@@ -2971,14 +2971,12 @@ impl<'a, 'b, V: View> ViewContext<'a, 'b, V> {
     }
 
     pub fn focus(&mut self, handle: &AnyViewHandle) {
-        self.window_context
-            .focus(handle.window_id, Some(handle.view_id));
+        self.window_context.focus(Some(handle.view_id));
     }
 
     pub fn focus_self(&mut self) {
-        let window_id = self.window_id;
         let view_id = self.view_id;
-        self.window_context.focus(window_id, Some(view_id));
+        self.window_context.focus(Some(view_id));
     }
 
     pub fn is_self_focused(&self) -> bool {
@@ -2997,8 +2995,7 @@ impl<'a, 'b, V: View> ViewContext<'a, 'b, V> {
     }
 
     pub fn blur(&mut self) {
-        let window_id = self.window_id;
-        self.window_context.focus(window_id, None);
+        self.window_context.focus(None);
     }
 
     pub fn on_window_should_close<F>(&mut self, mut callback: F)

crates/gpui/src/app/window.rs 🔗

@@ -1096,6 +1096,10 @@ impl<'a> WindowContext<'a> {
         self.window.focused_view_id
     }
 
+    pub fn focus(&mut self, view_id: Option<usize>) {
+        self.app_context.focus(self.window_id, view_id);
+    }
+
     pub fn window_bounds(&self) -> WindowBounds {
         self.window.platform_window.bounds()
     }