From 27258a0889282459874635c17149854923e6f64f Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Sun, 2 Apr 2023 15:50:42 -0600 Subject: [PATCH] Remove From trait for AnyViewHandle in favor of into_any method I think it's more explicit. --- crates/gpui/src/app.rs | 29 ++++++++++++++--------------- crates/workspace/src/workspace.rs | 10 +++------- crates/zed/src/zed.rs | 2 +- 3 files changed, 18 insertions(+), 23 deletions(-) diff --git a/crates/gpui/src/app.rs b/crates/gpui/src/app.rs index 77f3cd620b0c21596c80067d7d9327c9b4554f9f..137a9d065361964586248587b36253c13b379544 100644 --- a/crates/gpui/src/app.rs +++ b/crates/gpui/src/app.rs @@ -1633,14 +1633,14 @@ impl MutableAppContext { this.cx.windows.insert( window_id, Window { - root_view: root_view.clone().into(), + root_view: root_view.clone().into_any(), focused_view_id: Some(root_view.id()), is_active: false, invalidation: None, is_fullscreen: false, }, ); - root_view.update(this, |view, cx| view.focus_in(cx.handle().into(), cx)); + root_view.update(this, |view, cx| view.focus_in(cx.handle().into_any(), cx)); let window = this.cx @@ -1662,17 +1662,18 @@ impl MutableAppContext { let root_view = this .build_and_insert_view(window_id, ParentId::Root, |cx| Some(build_root_view(cx))) .unwrap(); + let focused_view_id = root_view.id(); this.cx.windows.insert( window_id, Window { - root_view: root_view.clone().into(), - focused_view_id: Some(root_view.id()), + root_view: root_view.clone().into_any(), + focused_view_id: Some(focused_view_id), is_active: false, invalidation: None, is_fullscreen: false, }, ); - root_view.update(this, |view, cx| view.focus_in(cx.handle().into(), cx)); + root_view.update(this, |view, cx| view.focus_in(cx.handle().into_any(), cx)); let status_item = this.cx.platform.add_status_item(); this.register_platform_window(window_id, status_item); @@ -1783,7 +1784,7 @@ impl MutableAppContext { .build_and_insert_view(window_id, ParentId::Root, |cx| Some(build_root_view(cx))) .unwrap(); let window = this.cx.windows.get_mut(&window_id).unwrap(); - window.root_view = root_view.clone().into(); + window.root_view = root_view.clone().into_any(); window.focused_view_id = Some(root_view.id()); root_view }) @@ -3362,7 +3363,7 @@ where ) { let mut cx = ViewContext::new(cx, window_id, view_id); let focused_view_handle: AnyViewHandle = if view_id == focused_id { - cx.handle().into() + cx.handle().into_any() } else { let focused_type = cx .views @@ -3384,7 +3385,7 @@ where ) { let mut cx = ViewContext::new(cx, window_id, view_id); let blurred_view_handle: AnyViewHandle = if view_id == blurred_id { - cx.handle().into() + cx.handle().into_any() } else { let blurred_type = cx .views @@ -3905,7 +3906,7 @@ impl<'a, T: View> ViewContext<'a, T> { .build_and_insert_view(window_id, ParentId::Root, |cx| Some(build_root_view(cx))) .unwrap(); let window = this.cx.windows.get_mut(&window_id).unwrap(); - window.root_view = root_view.clone().into(); + window.root_view = root_view.clone().into_any(); window.focused_view_id = Some(root_view.id()); root_view }) @@ -4690,6 +4691,10 @@ impl ViewHandle { WeakViewHandle::new(self.window_id, self.view_id) } + pub fn into_any(self) -> AnyViewHandle { + self.any_handle + } + pub fn window_id(&self) -> usize { self.window_id } @@ -4902,12 +4907,6 @@ impl Clone for AnyViewHandle { } } -impl From> for AnyViewHandle { - fn from(handle: ViewHandle) -> Self { - handle.any_handle - } -} - impl PartialEq> for AnyViewHandle { fn eq(&self, other: &ViewHandle) -> bool { self.window_id == other.window_id && self.view_id == other.view_id diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index 411e77f63f8b91b0b7eaf573a86650c98839bc21..19ead7eb3c5b8ed6436e14d4aaef4046a94a8ae3 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -1036,12 +1036,8 @@ impl Workspace { &self.client } - pub fn set_titlebar_item( - &mut self, - item: impl Into, - cx: &mut ViewContext, - ) { - self.titlebar_item = Some(item.into()); + pub fn set_titlebar_item(&mut self, item: AnyViewHandle, cx: &mut ViewContext) { + self.titlebar_item = Some(item); cx.notify(); } @@ -1355,7 +1351,7 @@ impl Workspace { } else { let modal = add_view(self, cx); cx.focus(&modal); - self.modal = Some(modal.into()); + self.modal = Some(modal.into_any()); None } } diff --git a/crates/zed/src/zed.rs b/crates/zed/src/zed.rs index cf15dd95291e315466b8b314477c806dd529fdff..9258a79d92a7864fb111443b63524dc26f09ff21 100644 --- a/crates/zed/src/zed.rs +++ b/crates/zed/src/zed.rs @@ -299,7 +299,7 @@ pub fn initialize_workspace( let collab_titlebar_item = cx.add_view(|cx| CollabTitlebarItem::new(&workspace_handle, &app_state.user_store, cx)); - workspace.set_titlebar_item(collab_titlebar_item, cx); + workspace.set_titlebar_item(collab_titlebar_item.into_any(), cx); let project_panel = ProjectPanel::new(workspace.project().clone(), cx); workspace.left_sidebar().update(cx, |sidebar, cx| {