diff --git a/crates/activity_indicator/src/activity_indicator.rs b/crates/activity_indicator/src/activity_indicator.rs index 11a8945d6115a58e5fde270373ecbdf6244674a6..4b58b3ad0a7be3a8231090dd0706778e39e0a04a 100644 --- a/crates/activity_indicator/src/activity_indicator.rs +++ b/crates/activity_indicator/src/activity_indicator.rs @@ -315,7 +315,7 @@ impl View for ActivityIndicator { "ActivityIndicator" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let Content { icon, message, @@ -343,7 +343,7 @@ impl View for ActivityIndicator { .contained() .with_margin_right(style.icon_spacing) .aligned() - .into_named_element("activity-icon") + .into_any_named("activity-icon") })) .with_child( Text::new(message, style.message.clone()) @@ -365,7 +365,7 @@ impl View for ActivityIndicator { }); } - element.into_element() + element.into_any() } } diff --git a/crates/auto_update/src/update_notification.rs b/crates/auto_update/src/update_notification.rs index 173406f645712ac67c0b8d8c5da3fe01ca38c9b7..c0b88fdf5e38be391e459f21f11e5c8aa9b2c3f6 100644 --- a/crates/auto_update/src/update_notification.rs +++ b/crates/auto_update/src/update_notification.rs @@ -2,7 +2,7 @@ use crate::ViewReleaseNotes; use gpui::{ elements::{Flex, MouseEventHandler, Padding, ParentElement, Svg, Text}, platform::{AppVersion, CursorStyle, MouseButton}, - Drawable, Entity, View, ViewContext, + Element, Entity, View, ViewContext, }; use menu::Cancel; use settings::Settings; @@ -26,7 +26,7 @@ impl View for UpdateNotification { "UpdateNotification" } - fn render(&mut self, cx: &mut gpui::ViewContext) -> gpui::Element { + fn render(&mut self, cx: &mut gpui::ViewContext) -> gpui::AnyElement { let theme = cx.global::().theme.clone(); let theme = &theme.update_notification; @@ -86,7 +86,7 @@ impl View for UpdateNotification { .on_click(MouseButton::Left, |_, _, cx| { cx.dispatch_action(ViewReleaseNotes) }) - .into_named_element("update notification") + .into_any_named("update notification") } } diff --git a/crates/breadcrumbs/src/breadcrumbs.rs b/crates/breadcrumbs/src/breadcrumbs.rs index 8f03914c3df4ad71a0053b1123f508fc1a38c635..c09706f378d9ca560fed5b68f9ad182606212b3b 100644 --- a/crates/breadcrumbs/src/breadcrumbs.rs +++ b/crates/breadcrumbs/src/breadcrumbs.rs @@ -41,10 +41,10 @@ impl View for Breadcrumbs { "Breadcrumbs" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let active_item = match &self.active_item { Some(active_item) => active_item, - None => return Empty::new().into_element(), + None => return Empty::new().into_any(), }; let not_editor = active_item.downcast::().is_none(); @@ -53,7 +53,7 @@ impl View for Breadcrumbs { let breadcrumbs = match active_item.breadcrumbs(&theme, cx) { Some(breadcrumbs) => breadcrumbs, - None => return Empty::new().into_element(), + None => return Empty::new().into_any(), } .into_iter() .map(|breadcrumb| { @@ -62,12 +62,12 @@ impl View for Breadcrumbs { theme.workspace.breadcrumbs.default.text.clone(), ) .with_highlights(breadcrumb.highlights.unwrap_or_default()) - .into_element() + .into_any() }); let crumbs = Flex::row() .with_children(Itertools::intersperse_with(breadcrumbs, || { - Label::new(" 〉 ", style.default.text.clone()).into_element() + Label::new(" 〉 ", style.default.text.clone()).into_any() })) .constrained() .with_height(theme.workspace.breadcrumb_height) @@ -78,7 +78,7 @@ impl View for Breadcrumbs { .with_style(style.default.container) .aligned() .left() - .into_element(); + .into_any(); } MouseEventHandler::::new(0, cx, |state, _| { @@ -97,7 +97,7 @@ impl View for Breadcrumbs { ) .aligned() .left() - .into_element() + .into_any() } } diff --git a/crates/collab_ui/src/collab_titlebar_item.rs b/crates/collab_ui/src/collab_titlebar_item.rs index 577415ffeabb3452896b4317acd07941292b7974..7a9c2cd97e284dab3a49ee832a857a05f9235218 100644 --- a/crates/collab_ui/src/collab_titlebar_item.rs +++ b/crates/collab_ui/src/collab_titlebar_item.rs @@ -68,11 +68,11 @@ impl View for CollabTitlebarItem { "CollabTitlebarItem" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let workspace = if let Some(workspace) = self.workspace.upgrade(cx) { workspace } else { - return Empty::new().into_element(); + return Empty::new().into_any(); }; let project = workspace.read(cx).project().read(cx); @@ -129,7 +129,7 @@ impl View for CollabTitlebarItem { Stack::new() .with_child(left_container) .with_child(right_container.aligned().right()) - .into_element() + .into_any() } } @@ -299,7 +299,7 @@ impl CollabTitlebarItem { )) .contained() .with_style(item_style.container) - .into_element() + .into_any() })), ContextMenuItem::item("Sign out", SignOut), ContextMenuItem::item("Send Feedback", feedback::feedback_editor::GiveFeedback), @@ -325,7 +325,7 @@ impl CollabTitlebarItem { &self, theme: &Theme, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let titlebar = &theme.workspace.titlebar; let badge = if self @@ -379,7 +379,7 @@ impl CollabTitlebarItem { ) .with_children(badge) .with_children(self.render_contacts_popover_host(titlebar, cx)) - .into_element() + .into_any() } fn render_toggle_screen_sharing_button( @@ -387,7 +387,7 @@ impl CollabTitlebarItem { theme: &Theme, room: &ModelHandle, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let icon; let tooltip; if room.read(cx).is_screen_sharing() { @@ -424,7 +424,7 @@ impl CollabTitlebarItem { cx, ) .aligned() - .into_element() + .into_any() } fn render_in_call_share_unshare_button( @@ -432,7 +432,7 @@ impl CollabTitlebarItem { workspace: &ViewHandle, theme: &Theme, cx: &mut ViewContext, - ) -> Option> { + ) -> Option> { let project = workspace.read(cx).project(); if project.read(cx).is_remote() { return None; @@ -478,11 +478,15 @@ impl CollabTitlebarItem { .aligned() .contained() .with_margin_left(theme.workspace.titlebar.item_spacing) - .into_element(), + .into_any(), ) } - fn render_user_menu_button(&self, theme: &Theme, cx: &mut ViewContext) -> Element { + fn render_user_menu_button( + &self, + theme: &Theme, + cx: &mut ViewContext, + ) -> AnyElement { let titlebar = &theme.workspace.titlebar; Stack::new() @@ -520,10 +524,10 @@ impl CollabTitlebarItem { .bottom() .right(), ) - .into_element() + .into_any() } - fn render_sign_in_button(&self, theme: &Theme, cx: &mut ViewContext) -> Element { + fn render_sign_in_button(&self, theme: &Theme, cx: &mut ViewContext) -> AnyElement { let titlebar = &theme.workspace.titlebar; MouseEventHandler::::new(0, cx, |state, _| { let style = titlebar.sign_in_prompt.style_for(state, false); @@ -535,14 +539,14 @@ impl CollabTitlebarItem { .on_click(MouseButton::Left, move |_, _, cx| { cx.dispatch_action(SignIn); }) - .into_element() + .into_any() } fn render_contacts_popover_host<'a>( &'a self, _theme: &'a theme::Titlebar, cx: &'a ViewContext, - ) -> Option> { + ) -> Option> { self.contacts_popover.as_ref().map(|popover| { Overlay::new(ChildView::new(popover, cx)) .with_fit_mode(OverlayFitMode::SwitchAnchor) @@ -551,7 +555,7 @@ impl CollabTitlebarItem { .aligned() .bottom() .right() - .into_element() + .into_any() }) } @@ -602,7 +606,7 @@ impl CollabTitlebarItem { user: &Arc, peer_id: PeerId, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let replica_id = workspace.read(cx).project().read(cx).replica_id(); Container::new(self.render_face_pile( user, @@ -614,7 +618,7 @@ impl CollabTitlebarItem { cx, )) .with_margin_right(theme.workspace.titlebar.item_spacing) - .into_element() + .into_any() } fn render_face_pile( @@ -626,7 +630,7 @@ impl CollabTitlebarItem { workspace: &ViewHandle, theme: &Theme, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let project_id = workspace.read(cx).project().read(cx).remote_id(); let room = ActiveCall::global(cx).read(cx).room(); let is_being_followed = workspace.read(cx).is_being_followed(peer_id); @@ -732,7 +736,7 @@ impl CollabTitlebarItem { .bottom(), ) })()) - .into_element(); + .into_any(); if let Some(location) = location { if let Some(replica_id) = replica_id { @@ -756,7 +760,7 @@ impl CollabTitlebarItem { theme.tooltip.clone(), cx, ) - .into_element(); + .into_any(); } else if let ParticipantLocation::SharedProject { project_id } = location { let user_id = user.id; content = MouseEventHandler::::new( @@ -778,7 +782,7 @@ impl CollabTitlebarItem { theme.tooltip.clone(), cx, ) - .into_element(); + .into_any(); } } content @@ -807,7 +811,7 @@ impl CollabTitlebarItem { avatar: Arc, avatar_style: AvatarStyle, background_color: Color, - ) -> Element { + ) -> AnyElement { Image::from_data(avatar) .with_style(avatar_style.image) .aligned() @@ -818,14 +822,14 @@ impl CollabTitlebarItem { .with_width(avatar_style.outer_width) .with_height(avatar_style.outer_width) .aligned() - .into_element() + .into_any() } fn render_connection_status( &self, status: &client::Status, cx: &mut ViewContext, - ) -> Option> { + ) -> Option> { enum ConnectionStatusButton {} let theme = &cx.global::().theme.clone(); @@ -842,7 +846,7 @@ impl CollabTitlebarItem { .aligned() .contained() .with_style(theme.workspace.titlebar.offline_icon.container) - .into_element(), + .into_any(), ), client::Status::UpgradeRequired => Some( MouseEventHandler::::new(0, cx, |_, _| { @@ -858,7 +862,7 @@ impl CollabTitlebarItem { .on_click(MouseButton::Left, |_, _, cx| { cx.dispatch_action(auto_update::Check); }) - .into_element(), + .into_any(), ), _ => None, } @@ -875,7 +879,7 @@ impl AvatarRibbon { } } -impl Drawable for AvatarRibbon { +impl Element for AvatarRibbon { type LayoutState = (); type PaintState = (); diff --git a/crates/collab_ui/src/collaborator_list_popover.rs b/crates/collab_ui/src/collaborator_list_popover.rs index 5cd935b9f5816263bc2f6907cb0b12cf9fc55b41..68206444415bd1b18909aaf73f11348e6c56dc1b 100644 --- a/crates/collab_ui/src/collaborator_list_popover.rs +++ b/crates/collab_ui/src/collaborator_list_popover.rs @@ -30,7 +30,7 @@ impl View for CollaboratorListPopover { "CollaboratorListPopover" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let theme = cx.global::().theme.clone(); MouseEventHandler::::new(0, cx, |_, _| { @@ -44,7 +44,7 @@ impl View for CollaboratorListPopover { .on_down_out(MouseButton::Left, move |_, _, cx| { cx.dispatch_action(ToggleCollaboratorList); }) - .into_element() + .into_any() } fn focus_out(&mut self, _: gpui::AnyViewHandle, cx: &mut ViewContext) { @@ -116,7 +116,7 @@ fn render_collaborator_list_entry( icon_action: IA, icon_tooltip: String, cx: &mut ViewContext, -) -> Element { +) -> AnyElement { enum Username {} enum UsernameTooltip {} enum Icon {} @@ -146,9 +146,9 @@ fn render_collaborator_list_entry( tooltip_theme.clone(), cx, ) - .into_element() + .into_any() } else { - username.into_element() + username.into_any() }) .with_child( MouseEventHandler::::new(index, cx, |_, _| icon) @@ -157,5 +157,5 @@ fn render_collaborator_list_entry( }) .with_tooltip::(index, icon_tooltip, None, tooltip_theme, cx), ) - .into_element() + .into_any() } diff --git a/crates/collab_ui/src/contact_finder.rs b/crates/collab_ui/src/contact_finder.rs index 55457705606a38b2fa1a7879c6c0072934913fc7..b07d6d7e2b130eb76e6d5c033c0c540f76aacf27 100644 --- a/crates/collab_ui/src/contact_finder.rs +++ b/crates/collab_ui/src/contact_finder.rs @@ -96,7 +96,7 @@ impl PickerDelegate for ContactFinderDelegate { mouse_state: &mut MouseState, selected: bool, cx: &gpui::AppContext, - ) -> Element> { + ) -> AnyElement> { let theme = &cx.global::().theme; let user = &self.potential_contacts[ix]; let request_status = self.user_store.read(cx).contact_request_status(user); @@ -150,6 +150,6 @@ impl PickerDelegate for ContactFinderDelegate { .with_style(style.container) .constrained() .with_height(theme.contact_finder.row_height) - .into_element() + .into_any() } } diff --git a/crates/collab_ui/src/contact_list.rs b/crates/collab_ui/src/contact_list.rs index 8f32abcc74a2305a72f5a7a93d8dcbab66f8ba16..8cbba6030d29a5dc9b6ca30ab80abb6c7b053048 100644 --- a/crates/collab_ui/src/contact_list.rs +++ b/crates/collab_ui/src/contact_list.rs @@ -748,7 +748,7 @@ impl ContactList { is_pending: bool, is_selected: bool, theme: &theme::ContactList, - ) -> Element { + ) -> AnyElement { Flex::row() .with_children(user.avatar.clone().map(|avatar| { Image::from_data(avatar) @@ -785,7 +785,7 @@ impl ContactList { .contact_row .style_for(&mut Default::default(), is_selected), ) - .into_element() + .into_any() } fn render_participant_project( @@ -797,7 +797,7 @@ impl ContactList { is_selected: bool, theme: &theme::ContactList, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let font_cache = cx.font_cache(); let host_avatar_height = theme .contact_avatar @@ -881,7 +881,7 @@ impl ContactList { }); } }) - .into_element() + .into_any() } fn render_participant_screen( @@ -890,7 +890,7 @@ impl ContactList { is_selected: bool, theme: &theme::ContactList, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let font_cache = cx.font_cache(); let host_avatar_height = theme .contact_avatar @@ -974,7 +974,7 @@ impl ContactList { .on_click(MouseButton::Left, move |_, _, cx| { cx.dispatch_action(OpenSharedScreen { peer_id }); }) - .into_element() + .into_any() } fn render_header( @@ -983,7 +983,7 @@ impl ContactList { is_selected: bool, is_collapsed: bool, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { enum Header {} enum LeaveCallContactList {} @@ -1046,7 +1046,7 @@ impl ContactList { .on_click(MouseButton::Left, move |_, _, cx| { cx.dispatch_action(ToggleExpanded(section)) }) - .into_element() + .into_any() } fn render_contact( @@ -1056,7 +1056,7 @@ impl ContactList { theme: &theme::ContactList, is_selected: bool, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let online = contact.online; let busy = contact.busy || calling; let user_id = contact.user.id; @@ -1155,7 +1155,7 @@ impl ContactList { event_handler = event_handler.with_cursor_style(CursorStyle::PointingHand); } - event_handler.into_element() + event_handler.into_any() } fn render_contact_request( @@ -1165,7 +1165,7 @@ impl ContactList { is_incoming: bool, is_selected: bool, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { enum Decline {} enum Accept {} enum Cancel {} @@ -1266,7 +1266,7 @@ impl ContactList { .contact_row .style_for(&mut Default::default(), is_selected), ) - .into_element() + .into_any() } fn call(&mut self, action: &Call, cx: &mut ViewContext) { @@ -1295,7 +1295,7 @@ impl View for ContactList { cx } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { enum AddContact {} let theme = cx.global::().theme.clone(); @@ -1331,7 +1331,7 @@ impl View for ContactList { .with_height(theme.contact_list.user_query_editor_height), ) .with_child(List::new(self.list_state.clone()).flex(1., false)) - .into_element() + .into_any() } fn focus_in(&mut self, _: gpui::AnyViewHandle, cx: &mut ViewContext) { @@ -1347,7 +1347,7 @@ impl View for ContactList { } } -fn render_icon_button(style: &IconButton, svg_path: &'static str) -> impl Drawable { +fn render_icon_button(style: &IconButton, svg_path: &'static str) -> impl Element { Svg::new(svg_path) .with_color(style.color) .constrained() diff --git a/crates/collab_ui/src/contact_notification.rs b/crates/collab_ui/src/contact_notification.rs index 82f90041be836c6bba062e132d2017b3e9a64250..9ad8a22485fc4fda56c3e945d24ae8aa8bbc24d0 100644 --- a/crates/collab_ui/src/contact_notification.rs +++ b/crates/collab_ui/src/contact_notification.rs @@ -42,7 +42,7 @@ impl View for ContactNotification { "ContactNotification" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { match self.kind { ContactEventKind::Requested => render_user_notification( self.user.clone(), diff --git a/crates/collab_ui/src/contacts_popover.rs b/crates/collab_ui/src/contacts_popover.rs index 15ceb26fbedf573b4414b4100733cd03f62aea33..cbef4bfa88b2421dc55c7d70b0dfbff866934c65 100644 --- a/crates/collab_ui/src/contacts_popover.rs +++ b/crates/collab_ui/src/contacts_popover.rs @@ -96,7 +96,7 @@ impl View for ContactsPopover { "ContactsPopover" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let theme = cx.global::().theme.clone(); let child = match &self.child { Child::ContactList(child) => ChildView::new(child, cx), @@ -115,7 +115,7 @@ impl View for ContactsPopover { .on_down_out(MouseButton::Left, move |_, _, cx| { cx.dispatch_action(ToggleContactsMenu); }) - .into_element() + .into_any() } fn focus_in(&mut self, _: gpui::AnyViewHandle, cx: &mut ViewContext) { diff --git a/crates/collab_ui/src/face_pile.rs b/crates/collab_ui/src/face_pile.rs index c426e44804c8abcf80ed1cc5b22d0254aed6fff6..839ea7c7353fd2b6d65bae5d58e9013b1f4cfc3a 100644 --- a/crates/collab_ui/src/face_pile.rs +++ b/crates/collab_ui/src/face_pile.rs @@ -7,14 +7,14 @@ use gpui::{ }, json::ToJson, serde_json::{self, json}, - Axis, Drawable, Element, SceneBuilder, ViewContext, + AnyElement, Axis, Element, SceneBuilder, ViewContext, }; use crate::CollabTitlebarItem; pub(crate) struct FacePile { overlap: f32, - faces: Vec>, + faces: Vec>, } impl FacePile { @@ -26,7 +26,7 @@ impl FacePile { } } -impl Drawable for FacePile { +impl Element for FacePile { type LayoutState = (); type PaintState = (); @@ -101,8 +101,8 @@ impl Drawable for FacePile { } } -impl Extend> for FacePile { - fn extend>>(&mut self, children: T) { +impl Extend> for FacePile { + fn extend>>(&mut self, children: T) { self.faces.extend(children); } } diff --git a/crates/collab_ui/src/incoming_call_notification.rs b/crates/collab_ui/src/incoming_call_notification.rs index e0799626d8ab7aca5ed8b325c77ee76452c42887..49c9adb84570584e3c5ce383afa384feddcb4bdf 100644 --- a/crates/collab_ui/src/incoming_call_notification.rs +++ b/crates/collab_ui/src/incoming_call_notification.rs @@ -6,7 +6,7 @@ use gpui::{ geometry::{rect::RectF, vector::vec2f}, impl_internal_actions, platform::{CursorStyle, MouseButton, WindowBounds, WindowKind, WindowOptions}, - AppContext, Element, Entity, View, ViewContext, + AnyElement, AppContext, Entity, View, ViewContext, }; use settings::Settings; use util::ResultExt; @@ -99,7 +99,7 @@ impl IncomingCallNotification { } } - fn render_caller(&self, cx: &mut ViewContext) -> Element { + fn render_caller(&self, cx: &mut ViewContext) -> AnyElement { let theme = &cx.global::().theme.incoming_call_notification; let default_project = proto::ParticipantProject::default(); let initial_project = self @@ -157,10 +157,10 @@ impl IncomingCallNotification { .contained() .with_style(theme.caller_container) .flex(1., true) - .into_element() + .into_any() } - fn render_buttons(&self, cx: &mut ViewContext) -> Element { + fn render_buttons(&self, cx: &mut ViewContext) -> AnyElement { enum Accept {} enum Decline {} @@ -200,7 +200,7 @@ impl IncomingCallNotification { .incoming_call_notification .button_width, ) - .into_element() + .into_any() } } @@ -213,7 +213,7 @@ impl View for IncomingCallNotification { "IncomingCallNotification" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let background = cx .global::() .theme @@ -226,6 +226,6 @@ impl View for IncomingCallNotification { .contained() .with_background_color(background) .expanded() - .into_element() + .into_any() } } diff --git a/crates/collab_ui/src/notifications.rs b/crates/collab_ui/src/notifications.rs index c3facc8b392bd6041ec70052380c8feb31e62081..66afea34c1b910a5907dd3be4d805434c3d723b3 100644 --- a/crates/collab_ui/src/notifications.rs +++ b/crates/collab_ui/src/notifications.rs @@ -2,7 +2,7 @@ use client::User; use gpui::{ elements::*, platform::{CursorStyle, MouseButton}, - Action, Drawable, Element, View, ViewContext, + Action, AnyElement, Element, View, ViewContext, }; use settings::Settings; use std::sync::Arc; @@ -17,7 +17,7 @@ pub fn render_user_notification( dismiss_action: A, buttons: Vec<(&'static str, Box)>, cx: &mut ViewContext, -) -> Element { +) -> AnyElement { let theme = cx.global::().theme.clone(); let theme = &theme.contact_notification; @@ -77,7 +77,7 @@ pub fn render_user_notification( .top() .flex_float(), ) - .into_named_element("contact notification header"), + .into_any_named("contact notification header"), ) .with_children(body.map(|body| { Label::new(body, theme.body_message.text.clone()) @@ -108,5 +108,5 @@ pub fn render_user_notification( ) }) .contained() - .into_element() + .into_any() } diff --git a/crates/collab_ui/src/project_shared_notification.rs b/crates/collab_ui/src/project_shared_notification.rs index 3600de2b14b66b9a284ceed27ba3afcee7ef7297..4cdb18d97c9166430852bf77102ebd6b5857ab73 100644 --- a/crates/collab_ui/src/project_shared_notification.rs +++ b/crates/collab_ui/src/project_shared_notification.rs @@ -102,7 +102,7 @@ impl ProjectSharedNotification { cx.remove_window(); } - fn render_owner(&self, cx: &mut ViewContext) -> Element { + fn render_owner(&self, cx: &mut ViewContext) -> AnyElement { let theme = &cx.global::().theme.project_shared_notification; Flex::row() .with_children(self.owner.avatar.clone().map(|avatar| { @@ -154,10 +154,10 @@ impl ProjectSharedNotification { .contained() .with_style(theme.owner_container) .flex(1., true) - .into_element() + .into_any() } - fn render_buttons(&self, cx: &mut ViewContext) -> Element { + fn render_buttons(&self, cx: &mut ViewContext) -> AnyElement { enum Open {} enum Dismiss {} @@ -203,7 +203,7 @@ impl ProjectSharedNotification { .project_shared_notification .button_width, ) - .into_element() + .into_any() } } @@ -216,7 +216,7 @@ impl View for ProjectSharedNotification { "ProjectSharedNotification" } - fn render(&mut self, cx: &mut ViewContext) -> gpui::Element { + fn render(&mut self, cx: &mut ViewContext) -> gpui::AnyElement { let background = cx .global::() .theme @@ -228,6 +228,6 @@ impl View for ProjectSharedNotification { .contained() .with_background_color(background) .expanded() - .into_element() + .into_any() } } diff --git a/crates/collab_ui/src/sharing_status_indicator.rs b/crates/collab_ui/src/sharing_status_indicator.rs index df67286a8cb07d325fcd2b4b007f8523669c82e7..42c3c886ad6cdf1d034fb9ff045a5c302b942992 100644 --- a/crates/collab_ui/src/sharing_status_indicator.rs +++ b/crates/collab_ui/src/sharing_status_indicator.rs @@ -3,7 +3,7 @@ use gpui::{ color::Color, elements::{MouseEventHandler, Svg}, platform::{Appearance, MouseButton}, - AppContext, Drawable, Element, Entity, View, ViewContext, + AnyElement, AppContext, Element, Entity, View, ViewContext, }; use settings::Settings; @@ -40,7 +40,7 @@ impl View for SharingStatusIndicator { "SharingStatusIndicator" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let color = match cx.window_appearance() { Appearance::Light | Appearance::VibrantLight => Color::black(), Appearance::Dark | Appearance::VibrantDark => Color::white(), @@ -56,6 +56,6 @@ impl View for SharingStatusIndicator { .on_click(MouseButton::Left, |_, _, cx| { cx.dispatch_action(ToggleScreenSharing); }) - .into_element() + .into_any() } } diff --git a/crates/command_palette/src/command_palette.rs b/crates/command_palette/src/command_palette.rs index c7e3acd6a82e02a4bd8fc3f7c8037d934c49cf4c..07c6de86630cf1247cce5eef8a36a61d5f52fc10 100644 --- a/crates/command_palette/src/command_palette.rs +++ b/crates/command_palette/src/command_palette.rs @@ -1,7 +1,7 @@ use collections::CommandPaletteFilter; use fuzzy::{StringMatch, StringMatchCandidate}; use gpui::{ - actions, elements::*, keymap_matcher::Keystroke, Action, AppContext, Drawable, MouseState, + actions, elements::*, keymap_matcher::Keystroke, Action, AppContext, Element, MouseState, ViewContext, }; use picker::{Picker, PickerDelegate, PickerEvent}; @@ -176,7 +176,7 @@ impl PickerDelegate for CommandPaletteDelegate { mouse_state: &mut MouseState, selected: bool, cx: &gpui::AppContext, - ) -> Element> { + ) -> AnyElement> { let mat = &self.matches[ix]; let command = &self.actions[mat.candidate_id]; let settings = cx.global::(); @@ -223,7 +223,7 @@ impl PickerDelegate for CommandPaletteDelegate { })) .contained() .with_style(style.container) - .into_element() + .into_any() } } diff --git a/crates/context_menu/src/context_menu.rs b/crates/context_menu/src/context_menu.rs index 7db150020898958fef2baad0d5e374578eb74253..cba3073caa1bfc9bab720f773ccfd3c6176362af 100644 --- a/crates/context_menu/src/context_menu.rs +++ b/crates/context_menu/src/context_menu.rs @@ -26,10 +26,10 @@ pub fn init(cx: &mut AppContext) { cx.add_action(ContextMenu::cancel); } -pub type StaticItem = Box Element>; +pub type StaticItem = Box AnyElement>; type ContextMenuItemBuilder = - Box Element>; + Box AnyElement>; pub enum ContextMenuItemLabel { String(Cow<'static, str>), @@ -142,9 +142,9 @@ impl View for ContextMenu { cx } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { if !self.visible { - return Empty::new().into_element(); + return Empty::new().into_any(); } // Render the menu once at minimum width. @@ -165,7 +165,7 @@ impl View for ContextMenu { .with_anchor_position(self.anchor_position) .with_anchor_corner(self.anchor_corner) .with_position_mode(self.position_mode) - .into_element() + .into_any() } fn focus_out(&mut self, _: AnyViewHandle, cx: &mut ViewContext) { @@ -327,10 +327,7 @@ impl ContextMenu { self.position_mode = mode; } - fn render_menu_for_measurement( - &self, - cx: &mut ViewContext, - ) -> impl Drawable { + fn render_menu_for_measurement(&self, cx: &mut ViewContext) -> impl Element { let style = cx.global::().theme.context_menu.clone(); Flex::row() .with_child( @@ -347,7 +344,7 @@ impl ContextMenu { Label::new(label.to_string(), style.label.clone()) .contained() .with_style(style.container) - .into_element() + .into_any() } ContextMenuItemLabel::Element(element) => { element(&mut Default::default(), style) @@ -363,7 +360,7 @@ impl ContextMenu { .with_style(style.separator) .constrained() .with_height(1.) - .into_element(), + .into_any(), } })), ) @@ -391,10 +388,10 @@ impl ContextMenu { style.keystroke.container, style.keystroke.text.clone(), ) - .into_element() + .into_any() } - ContextMenuItem::Static(_) => Empty::new().into_element(), + ContextMenuItem::Static(_) => Empty::new().into_any(), ContextMenuItem::Separator => Empty::new() .collapsed() @@ -402,7 +399,7 @@ impl ContextMenu { .with_height(1.) .contained() .with_style(style.separator) - .into_element(), + .into_any(), } })) .contained() @@ -412,7 +409,7 @@ impl ContextMenu { .with_style(style.container) } - fn render_menu(&self, cx: &mut ViewContext) -> impl Drawable { + fn render_menu(&self, cx: &mut ViewContext) -> impl Element { enum Menu {} enum MenuItem {} @@ -441,7 +438,7 @@ impl ContextMenu { ContextMenuItemLabel::String(label) => { Label::new(label.clone(), style.label.clone()) .contained() - .into_element() + .into_any() } ContextMenuItemLabel::Element(element) => { element(state, style) @@ -468,7 +465,7 @@ impl ContextMenu { cx.dispatch_any_action_at(window_id, view_id, action.boxed_clone()); }) .on_drag(MouseButton::Left, |_, _, _| {}) - .into_element() + .into_any() } ContextMenuItem::Static(f) => f(cx), @@ -478,7 +475,7 @@ impl ContextMenu { .with_height(1.) .contained() .with_style(style.separator) - .into_element(), + .into_any(), } })) .contained() diff --git a/crates/copilot/src/sign_in.rs b/crates/copilot/src/sign_in.rs index 1ad407912efa71b7dc2c4d36ec2fedd62664e85f..d7aadb62623c7ca52a83bf5cf557a25fdb5e84e6 100644 --- a/crates/copilot/src/sign_in.rs +++ b/crates/copilot/src/sign_in.rs @@ -4,7 +4,7 @@ use gpui::{ geometry::rect::RectF, impl_internal_actions, platform::{WindowBounds, WindowKind, WindowOptions}, - AnyViewHandle, AppContext, ClipboardItem, Drawable, Element, Entity, View, ViewContext, + AnyElement, AnyViewHandle, AppContext, ClipboardItem, Element, Entity, View, ViewContext, ViewHandle, }; use settings::Settings; @@ -119,7 +119,7 @@ impl CopilotCodeVerification { data: &PromptUserDeviceFlow, style: &theme::Copilot, cx: &mut ViewContext, - ) -> impl Drawable { + ) -> impl Element { let copied = cx .read_from_clipboard() .map(|item| item.text() == &data.user_code) @@ -167,7 +167,7 @@ impl CopilotCodeVerification { data: &PromptUserDeviceFlow, style: &theme::Copilot, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { enum ConnectButton {} Flex::column() @@ -226,10 +226,13 @@ impl CopilotCodeVerification { }, )) .align_children_center() - .into_element() + .into_any() } - fn render_enabled_modal(style: &theme::Copilot, cx: &mut ViewContext) -> Element { + fn render_enabled_modal( + style: &theme::Copilot, + cx: &mut ViewContext, + ) -> AnyElement { enum DoneButton {} let enabled_style = &style.auth.authorized; @@ -267,13 +270,13 @@ impl CopilotCodeVerification { |_, _, cx| cx.remove_window(), )) .align_children_center() - .into_element() + .into_any() } fn render_unauthorized_modal( style: &theme::Copilot, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let unauthorized_style = &style.auth.not_authorized; Flex::column() @@ -324,7 +327,7 @@ impl CopilotCodeVerification { }, )) .align_children_center() - .into_element() + .into_any() } } @@ -345,7 +348,7 @@ impl View for CopilotCodeVerification { cx.notify() } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { enum ConnectModal {} let style = cx.global::().theme.clone(); @@ -357,7 +360,7 @@ impl View for CopilotCodeVerification { |cx| { Flex::column() .with_children([ - theme::ui::icon(&style.copilot.auth.header).into_element(), + theme::ui::icon(&style.copilot.auth.header).into_any(), match &self.status { Status::SigningIn { prompt: Some(prompt), @@ -375,12 +378,12 @@ impl View for CopilotCodeVerification { self.connect_clicked = false; Self::render_enabled_modal(&style.copilot, cx) } - _ => Empty::new().into_element(), + _ => Empty::new().into_any(), }, ]) .align_children_center() }, ) - .into_element() + .into_any() } } diff --git a/crates/copilot_button/src/copilot_button.rs b/crates/copilot_button/src/copilot_button.rs index a838766233118eb50cc09added94f059e37b40f0..da13ce4413ecca68c276ce4399440f98edc0f445 100644 --- a/crates/copilot_button/src/copilot_button.rs +++ b/crates/copilot_button/src/copilot_button.rs @@ -6,7 +6,8 @@ use gpui::{ elements::*, impl_internal_actions, platform::{CursorStyle, MouseButton}, - AppContext, Drawable, Element, Entity, MouseState, Subscription, View, ViewContext, ViewHandle, + AnyElement, AppContext, Element, Entity, MouseState, Subscription, View, ViewContext, + ViewHandle, }; use settings::{settings_file::SettingsFile, Settings}; use workspace::{ @@ -155,17 +156,17 @@ impl View for CopilotButton { "CopilotButton" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let settings = cx.global::(); if !settings.features.copilot { - return Empty::new().into_element(); + return Empty::new().into_any(); } let theme = settings.theme.clone(); let active = self.popup_menu.read(cx).visible(); let Some(copilot) = Copilot::global(cx) else { - return Empty::new().into_element(); + return Empty::new().into_any(); }; let status = copilot.read(cx).status(); @@ -205,7 +206,7 @@ impl View for CopilotButton { .constrained() .with_width(style.icon_size) .aligned() - .into_named_element("copilot-icon"), + .into_any_named("copilot-icon"), ) .constrained() .with_height(style.icon_size) @@ -236,7 +237,7 @@ impl View for CopilotButton { ), ) .with_child(ChildView::new(&self.popup_menu, cx).aligned().top().right()) - .into_element() + .into_any() } } @@ -323,7 +324,7 @@ impl CopilotButton { .with_child(Label::new("Copilot Settings", style.label.clone())) .with_child(theme::ui::icon(icon_style.style_for(state, false))) .align_children_center() - .into_element() + .into_any() }, ), OsOpen::new(COPILOT_SETTINGS_URL), diff --git a/crates/diagnostics/src/diagnostics.rs b/crates/diagnostics/src/diagnostics.rs index f637880d52fb0c68bfc5045ae2380617022dfa6a..53ac43be2e3d3877a777220d362c90cfe9dff4ca 100644 --- a/crates/diagnostics/src/diagnostics.rs +++ b/crates/diagnostics/src/diagnostics.rs @@ -89,16 +89,16 @@ impl View for ProjectDiagnosticsEditor { "ProjectDiagnosticsEditor" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { if self.path_states.is_empty() { let theme = &cx.global::().theme.project_diagnostics; Label::new("No problems in workspace", theme.empty_message.clone()) .aligned() .contained() .with_style(theme.container) - .into_element() + .into_any() } else { - ChildView::new(&self.editor, cx).into_element() + ChildView::new(&self.editor, cx).into_any() } } @@ -535,7 +535,7 @@ impl Item for ProjectDiagnosticsEditor { _detail: Option, style: &theme::Tab, cx: &AppContext, - ) -> Element { + ) -> AnyElement { render_summary( &self.summary, &style.label.text, @@ -718,7 +718,7 @@ fn diagnostic_header_renderer(diagnostic: Diagnostic) -> RenderBlock { .with_padding_left(cx.gutter_padding) .with_padding_right(cx.gutter_padding) .expanded() - .into_named_element("diagnostic header") + .into_any_named("diagnostic header") }) } @@ -726,9 +726,9 @@ pub(crate) fn render_summary( summary: &DiagnosticSummary, text_style: &TextStyle, theme: &theme::ProjectDiagnostics, -) -> Element { +) -> AnyElement { if summary.error_count == 0 && summary.warning_count == 0 { - Label::new("No problems", text_style.clone()).into_element() + Label::new("No problems", text_style.clone()).into_any() } else { let icon_width = theme.tab_icon_width; let icon_spacing = theme.tab_icon_spacing; @@ -773,7 +773,7 @@ pub(crate) fn render_summary( ) .aligned(), ) - .into_element() + .into_any() } } diff --git a/crates/diagnostics/src/items.rs b/crates/diagnostics/src/items.rs index 6febb447e6c8f0400b214f81771701eb3bb7cb6c..19b1506509d8faa9e610b9da5dbcbbb70bb3a393 100644 --- a/crates/diagnostics/src/items.rs +++ b/crates/diagnostics/src/items.rs @@ -85,7 +85,7 @@ impl View for DiagnosticIndicator { "DiagnosticIndicator" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { enum Summary {} enum Message {} @@ -146,7 +146,7 @@ impl View for DiagnosticIndicator { .constrained() .with_width(style.icon_width) .aligned() - .into_named_element("ok-icon"), + .into_any_named("ok-icon"), ); } @@ -174,7 +174,7 @@ impl View for DiagnosticIndicator { cx, ) .aligned() - .into_element(), + .into_any(), ); let style = &cx.global::().theme.workspace.status_bar; @@ -206,7 +206,7 @@ impl View for DiagnosticIndicator { ); } - element.into_named_element("diagnostic indicator") + element.into_any_named("diagnostic indicator") } fn debug_json(&self, _: &gpui::AppContext) -> serde_json::Value { diff --git a/crates/drag_and_drop/src/drag_and_drop.rs b/crates/drag_and_drop/src/drag_and_drop.rs index 8eb0fab15b033f8cc52863ac7c236241d765ec3b..fdf122593eed1510f3ffd47fdc962d3a739f7949 100644 --- a/crates/drag_and_drop/src/drag_and_drop.rs +++ b/crates/drag_and_drop/src/drag_and_drop.rs @@ -6,7 +6,7 @@ use gpui::{ geometry::{rect::RectF, vector::Vector2F}, platform::{CursorStyle, MouseButton}, scene::{MouseDown, MouseDrag}, - Drawable, Element, View, ViewContext, WeakViewHandle, WindowContext, + AnyElement, Element, View, ViewContext, WeakViewHandle, WindowContext, }; const DEAD_ZONE: f32 = 4.; @@ -26,7 +26,7 @@ enum State { region_offset: Vector2F, region: RectF, payload: Rc, - render: Rc, &mut ViewContext) -> Element>, + render: Rc, &mut ViewContext) -> AnyElement>, }, Canceled, } @@ -124,7 +124,7 @@ impl DragAndDrop { event: MouseDrag, payload: Rc, cx: &mut WindowContext, - render: Rc) -> Element>, + render: Rc) -> AnyElement>, ) { let window_id = cx.window_id(); cx.update_global(|this: &mut Self, cx| { @@ -178,7 +178,7 @@ impl DragAndDrop { }); } - pub fn render(cx: &mut ViewContext) -> Option> { + pub fn render(cx: &mut ViewContext) -> Option> { enum DraggedElementHandler {} cx.global::() .currently_dragged @@ -230,7 +230,7 @@ impl DragAndDrop { .with_height(region.height()), ) .with_anchor_position(position) - .into_element(), + .into_any(), ) } @@ -252,7 +252,7 @@ impl DragAndDrop { }); }); }) - .into_element(), + .into_any(), ), } }) @@ -295,7 +295,7 @@ pub trait Draggable { fn as_draggable( self, payload: P, - render: impl 'static + Fn(&P, &mut ViewContext) -> Element, + render: impl 'static + Fn(&P, &mut ViewContext) -> AnyElement, ) -> Self where Self: Sized; @@ -305,7 +305,7 @@ impl Draggable for MouseEventHandler { fn as_draggable( self, payload: P, - render: impl 'static + Fn(&P, &mut ViewContext) -> Element, + render: impl 'static + Fn(&P, &mut ViewContext) -> AnyElement, ) -> Self where Self: Sized, diff --git a/crates/editor/src/display_map.rs b/crates/editor/src/display_map.rs index 01df7bb2bdb62d5572e7a3105c9ec451dd8d4df1..e190ec7717114dd645b46ef650d24ccba4862d92 100644 --- a/crates/editor/src/display_map.rs +++ b/crates/editor/src/display_map.rs @@ -973,7 +973,7 @@ pub mod tests { position, height, disposition, - render: Arc::new(|_| Empty::new().into_element()), + render: Arc::new(|_| Empty::new().into_any()), } }) .collect::>(); diff --git a/crates/editor/src/display_map/block_map.rs b/crates/editor/src/display_map/block_map.rs index 9fe78c1081e3728e2267eb24dac5064b019cc5e3..4f2732baf77bd0ff1246e6da0be350a06fa85ea0 100644 --- a/crates/editor/src/display_map/block_map.rs +++ b/crates/editor/src/display_map/block_map.rs @@ -4,7 +4,7 @@ use super::{ }; use crate::{Anchor, Editor, ExcerptId, ExcerptRange, ToPoint as _}; use collections::{Bound, HashMap, HashSet}; -use gpui::{fonts::HighlightStyle, Element, ViewContext}; +use gpui::{fonts::HighlightStyle, AnyElement, ViewContext}; use language::{BufferSnapshot, Chunk, Patch, Point}; use parking_lot::Mutex; use std::{ @@ -50,7 +50,7 @@ struct BlockRow(u32); #[derive(Copy, Clone, Debug, Default, Eq, Ord, PartialOrd, PartialEq)] struct WrapRow(u32); -pub type RenderBlock = Arc Element>; +pub type RenderBlock = Arc AnyElement>; pub struct Block { id: BlockId, @@ -69,7 +69,7 @@ where pub position: P, pub height: u8, pub style: BlockStyle, - pub render: Arc Element>, + pub render: Arc AnyElement>, pub disposition: BlockDisposition, } @@ -947,7 +947,7 @@ impl DerefMut for BlockContext<'_, '_, '_, '_> { } impl Block { - pub fn render(&self, cx: &mut BlockContext) -> Element { + pub fn render(&self, cx: &mut BlockContext) -> AnyElement { self.render.lock()(cx) } @@ -994,7 +994,7 @@ mod tests { use crate::display_map::suggestion_map::SuggestionMap; use crate::display_map::{fold_map::FoldMap, tab_map::TabMap, wrap_map::WrapMap}; use crate::multi_buffer::MultiBuffer; - use gpui::{elements::Empty, Drawable}; + use gpui::{elements::Empty, Element}; use rand::prelude::*; use settings::Settings; use std::env; @@ -1045,21 +1045,21 @@ mod tests { position: buffer_snapshot.anchor_after(Point::new(1, 0)), height: 1, disposition: BlockDisposition::Above, - render: Arc::new(|_| Empty::new().into_named_element("block 1")), + render: Arc::new(|_| Empty::new().into_any_named("block 1")), }, BlockProperties { style: BlockStyle::Fixed, position: buffer_snapshot.anchor_after(Point::new(1, 2)), height: 2, disposition: BlockDisposition::Above, - render: Arc::new(|_| Empty::new().into_named_element("block 2")), + render: Arc::new(|_| Empty::new().into_any_named("block 2")), }, BlockProperties { style: BlockStyle::Fixed, position: buffer_snapshot.anchor_after(Point::new(3, 3)), height: 3, disposition: BlockDisposition::Below, - render: Arc::new(|_| Empty::new().into_named_element("block 3")), + render: Arc::new(|_| Empty::new().into_any_named("block 3")), }, ]); @@ -1219,14 +1219,14 @@ mod tests { style: BlockStyle::Fixed, position: buffer_snapshot.anchor_after(Point::new(1, 12)), disposition: BlockDisposition::Above, - render: Arc::new(|_| Empty::new().into_named_element("block 1")), + render: Arc::new(|_| Empty::new().into_any_named("block 1")), height: 1, }, BlockProperties { style: BlockStyle::Fixed, position: buffer_snapshot.anchor_after(Point::new(1, 1)), disposition: BlockDisposition::Below, - render: Arc::new(|_| Empty::new().into_named_element("block 2")), + render: Arc::new(|_| Empty::new().into_any_named("block 2")), height: 1, }, ]); @@ -1329,7 +1329,7 @@ mod tests { position, height, disposition, - render: Arc::new(|_| Empty::new().into_element()), + render: Arc::new(|_| Empty::new().into_any()), } }) .collect::>(); diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index c2c1b23dc1324d4fd1134b6f4789b1478e6c11ba..54ba2c1a9cef0c9d4308c9e1d5b1ce741b2b7172 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -41,7 +41,7 @@ use gpui::{ keymap_matcher::KeymapContext, platform::{CursorStyle, MouseButton}, serde_json::{self, json}, - AnyViewHandle, AppContext, AsyncAppContext, ClipboardItem, Drawable, Element, Entity, + AnyElement, AnyViewHandle, AppContext, AsyncAppContext, ClipboardItem, Element, Entity, ModelHandle, Subscription, Task, View, ViewContext, ViewHandle, WeakViewHandle, WindowContext, }; use highlight_matching_bracket::refresh_matching_bracket_highlights; @@ -725,7 +725,7 @@ impl ContextMenu { cursor_position: DisplayPoint, style: EditorStyle, cx: &mut ViewContext, - ) -> (DisplayPoint, Element) { + ) -> (DisplayPoint, AnyElement) { match self { ContextMenu::Completions(menu) => (cursor_position, menu.render(style, cx)), ContextMenu::CodeActions(menu) => menu.render(cursor_position, style, cx), @@ -777,7 +777,7 @@ impl CompletionsMenu { !self.matches.is_empty() } - fn render(&self, style: EditorStyle, cx: &mut ViewContext) -> Element { + fn render(&self, style: EditorStyle, cx: &mut ViewContext) -> AnyElement { enum CompletionTag {} let completions = self.completions.clone(); @@ -827,7 +827,7 @@ impl CompletionsMenu { item_ix: Some(item_ix), }); }) - .into_element(), + .into_any(), ); } }, @@ -847,7 +847,7 @@ impl CompletionsMenu { ) .contained() .with_style(container_style) - .into_element() + .into_any() } pub async fn filter(&mut self, query: Option<&str>, executor: Arc) { @@ -953,7 +953,7 @@ impl CodeActionsMenu { mut cursor_position: DisplayPoint, style: EditorStyle, cx: &mut ViewContext, - ) -> (DisplayPoint, Element) { + ) -> (DisplayPoint, AnyElement) { enum ActionTag {} let container_style = style.autocomplete.container; @@ -988,7 +988,7 @@ impl CodeActionsMenu { item_ix: Some(item_ix), }); }) - .into_element(), + .into_any(), ); } }, @@ -1002,7 +1002,7 @@ impl CodeActionsMenu { ) .contained() .with_style(container_style) - .into_element(); + .into_any(); if self.deployed_from_indicator { *cursor_position.column_mut() = 0; @@ -3129,7 +3129,7 @@ impl Editor { style: &EditorStyle, active: bool, cx: &mut ViewContext, - ) -> Option> { + ) -> Option> { if self.available_code_actions.is_some() { enum CodeActions {} Some( @@ -3144,7 +3144,7 @@ impl Editor { deployed_from_indicator: true, }); }) - .into_element(), + .into_any(), ) } else { None @@ -3159,7 +3159,7 @@ impl Editor { line_height: f32, gutter_margin: f32, cx: &mut ViewContext, - ) -> Vec>> { + ) -> Vec>> { enum FoldIndicators {} let style = style.folds.clone(); @@ -3207,7 +3207,7 @@ impl Editor { }); } }) - .into_element() + .into_any() }) }) .flatten() @@ -3226,7 +3226,7 @@ impl Editor { cursor_position: DisplayPoint, style: EditorStyle, cx: &mut ViewContext, - ) -> Option<(DisplayPoint, Element)> { + ) -> Option<(DisplayPoint, AnyElement)> { self.context_menu .as_ref() .map(|menu| menu.render(cursor_position, style, cx)) @@ -5889,7 +5889,7 @@ impl Editor { ChildView::new(&editor, cx) .contained() .with_padding_left(cx.anchor_x) - .into_element() + .into_any() } }), disposition: BlockDisposition::Below, @@ -7003,7 +7003,7 @@ impl Entity for Editor { } impl View for Editor { - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let style = self.style(cx); let font_changed = self.display_map.update(cx, |map, cx| { map.set_fold_ellipses_color(style.folds.ellipses.text_color); @@ -7020,7 +7020,7 @@ impl View for Editor { Stack::new() .with_child(EditorElement::new(style.clone())) .with_child(ChildView::new(&self.mouse_context_menu, cx)) - .into_element() + .into_any() } fn ui_name() -> &'static str { @@ -7496,7 +7496,7 @@ pub fn diagnostic_block_renderer(diagnostic: Diagnostic, is_valid: bool) -> Rend })) .aligned() .left() - .into_element() + .into_any() }) } diff --git a/crates/editor/src/editor_tests.rs b/crates/editor/src/editor_tests.rs index e6d0b5e3f2c7f57c11a427e7a1adfaa1036adaa2..3ef29f81a10de38683f59262f0be2653b8457dfa 100644 --- a/crates/editor/src/editor_tests.rs +++ b/crates/editor/src/editor_tests.rs @@ -2299,7 +2299,7 @@ fn test_move_line_up_down_with_blocks(cx: &mut TestAppContext) { position: snapshot.anchor_after(Point::new(2, 0)), disposition: BlockDisposition::Below, height: 1, - render: Arc::new(|_| Empty::new().into_element()), + render: Arc::new(|_| Empty::new().into_any()), }], cx, ); diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index c44d6808dcaa2e74e32efb8b303198788dec6c49..11791099036c8ccc839d1203cf925c9674ef2106 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -31,7 +31,7 @@ use gpui::{ json::{self, ToJson}, platform::{CursorStyle, Modifiers, MouseButton, MouseButtonEvent, MouseMovedEvent}, text_layout::{self, Line, RunStyle, TextLayoutCache}, - Axis, Border, CursorRegion, Drawable, Element, EventContext, MouseRegion, Quad, SceneBuilder, + AnyElement, Axis, Border, CursorRegion, Element, EventContext, MouseRegion, Quad, SceneBuilder, SizeConstraint, ViewContext, WindowContext, }; use itertools::Itertools; @@ -1500,7 +1500,7 @@ impl EditorElement { .with_padding_left(gutter_padding) .with_padding_right(gutter_padding) .expanded() - .into_named_element("path header block") + .into_any_named("path header block") } else { let text_style = self.style.text.clone(); Flex::row() @@ -1510,7 +1510,7 @@ impl EditorElement { .with_padding_left(gutter_padding) .with_padding_right(gutter_padding) .expanded() - .into_named_element("collapsed context") + .into_any_named("collapsed context") } } }; @@ -1563,7 +1563,7 @@ impl EditorElement { } } -impl Drawable for EditorElement { +impl Element for EditorElement { type LayoutState = LayoutState; type PaintState = (); @@ -2106,10 +2106,10 @@ pub struct LayoutState { scrollbar_row_range: Range, show_scrollbars: bool, max_row: u32, - context_menu: Option<(DisplayPoint, Element)>, - code_actions_indicator: Option<(u32, Element)>, - hover_popovers: Option<(DisplayPoint, Vec>)>, - fold_indicators: Vec>>, + context_menu: Option<(DisplayPoint, AnyElement)>, + code_actions_indicator: Option<(u32, AnyElement)>, + hover_popovers: Option<(DisplayPoint, Vec>)>, + fold_indicators: Vec>>, } pub struct PositionMap { @@ -2160,7 +2160,7 @@ impl PositionMap { struct BlockLayout { row: u32, - element: Element, + element: AnyElement, style: BlockStyle, } @@ -2531,7 +2531,7 @@ mod tests { disposition: BlockDisposition::Above, height: 3, position: Anchor::min(), - render: Arc::new(|_| Empty::new().into_element()), + render: Arc::new(|_| Empty::new().into_any()), }], cx, ); diff --git a/crates/editor/src/hover_popover.rs b/crates/editor/src/hover_popover.rs index b1e6f26000dbc694104c36a8c47b8c882c351c5a..7c62f71bda11f5af6fd5618101cecc9b3d525728 100644 --- a/crates/editor/src/hover_popover.rs +++ b/crates/editor/src/hover_popover.rs @@ -4,7 +4,7 @@ use gpui::{ elements::{Flex, MouseEventHandler, Padding, Text}, impl_internal_actions, platform::{CursorStyle, MouseButton}, - AppContext, Axis, Drawable, Element, ModelHandle, Task, ViewContext, + AnyElement, AppContext, Axis, Element, ModelHandle, Task, ViewContext, }; use language::{Bias, DiagnosticEntry, DiagnosticSeverity}; use project::{HoverBlock, Project}; @@ -283,7 +283,7 @@ impl HoverState { style: &EditorStyle, visible_rows: Range, cx: &mut ViewContext, - ) -> Option<(DisplayPoint, Vec>)> { + ) -> Option<(DisplayPoint, Vec>)> { // If there is a diagnostic, position the popovers based on that. // Otherwise use the start of the hover range let anchor = self @@ -323,7 +323,7 @@ pub struct InfoPopover { } impl InfoPopover { - pub fn render(&self, style: &EditorStyle, cx: &mut ViewContext) -> Element { + pub fn render(&self, style: &EditorStyle, cx: &mut ViewContext) -> AnyElement { MouseEventHandler::::new(0, cx, |_, cx| { let mut flex = Flex::new(Axis::Vertical).scrollable::(1, None, cx); flex.extend(self.contents.iter().map(|content| { @@ -344,7 +344,7 @@ impl InfoPopover { }) .collect(), ) - .into_element() + .into_any() } else { let mut text_style = style.hover_popover.prose.clone(); text_style.font_size = style.text.font_size; @@ -353,7 +353,7 @@ impl InfoPopover { .with_soft_wrap(true) .contained() .with_style(style.hover_popover.block_style) - .into_element() + .into_any() } })); flex.contained().with_style(style.hover_popover.container) @@ -365,7 +365,7 @@ impl InfoPopover { top: HOVER_POPOVER_GAP, ..Default::default() }) - .into_element() + .into_any() } } @@ -376,7 +376,7 @@ pub struct DiagnosticPopover { } impl DiagnosticPopover { - pub fn render(&self, style: &EditorStyle, cx: &mut ViewContext) -> Element { + pub fn render(&self, style: &EditorStyle, cx: &mut ViewContext) -> AnyElement { enum PrimaryDiagnostic {} let mut text_style = style.hover_popover.prose.clone(); @@ -415,7 +415,7 @@ impl DiagnosticPopover { tooltip_style, cx, ) - .into_element() + .into_any() } pub fn activation_info(&self) -> (usize, Anchor) { diff --git a/crates/editor/src/items.rs b/crates/editor/src/items.rs index cd3a41a5154f6e2253eb6fbd6eebcc23a487ba44..a1316b81792a37d0fdd536d63756febf650d46c8 100644 --- a/crates/editor/src/items.rs +++ b/crates/editor/src/items.rs @@ -563,7 +563,7 @@ impl Item for Editor { detail: Option, style: &theme::Tab, cx: &AppContext, - ) -> Element { + ) -> AnyElement { Flex::row() .with_child(Label::new(self.title(cx).to_string(), style.label.clone()).aligned()) .with_children(detail.and_then(|detail| { @@ -579,7 +579,7 @@ impl Item for Editor { .aligned(), ) })) - .into_element() + .into_any() } fn for_each_project_item(&self, cx: &AppContext, f: &mut dyn FnMut(usize, &dyn project::Item)) { @@ -1108,16 +1108,16 @@ impl View for CursorPosition { "CursorPosition" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { if let Some(position) = self.position { let theme = &cx.global::().theme.workspace.status_bar; let mut text = format!("{},{}", position.row + 1, position.column + 1); if self.selected_count > 0 { write!(text, " ({} selected)", self.selected_count).unwrap(); } - Label::new(text, theme.cursor_position.clone()).into_element() + Label::new(text, theme.cursor_position.clone()).into_any() } else { - Empty::new().into_element() + Empty::new().into_any() } } } diff --git a/crates/feedback/src/deploy_feedback_button.rs b/crates/feedback/src/deploy_feedback_button.rs index e3256b5cbe7d0e085d04a709114b0eb45ed60bd3..9536477c74eb0ae373a85466c6df9c15cdf21247 100644 --- a/crates/feedback/src/deploy_feedback_button.rs +++ b/crates/feedback/src/deploy_feedback_button.rs @@ -27,7 +27,7 @@ impl View for DeployFeedbackButton { "DeployFeedbackButton" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let active = self.active; let theme = cx.global::().theme.clone(); Stack::new() @@ -65,7 +65,7 @@ impl View for DeployFeedbackButton { cx, ), ) - .into_element() + .into_any() } } diff --git a/crates/feedback/src/feedback_editor.rs b/crates/feedback/src/feedback_editor.rs index 0466402ad9d327bb00798230a5750742d9720582..e5a406bc733603a5b39117a489d7722149219d48 100644 --- a/crates/feedback/src/feedback_editor.rs +++ b/crates/feedback/src/feedback_editor.rs @@ -13,7 +13,7 @@ use gpui::{ actions, elements::{ChildView, Flex, Label, ParentElement, Svg}, platform::PromptLevel, - serde_json, AnyViewHandle, AppContext, Drawable, Element, Entity, ModelHandle, Task, View, + serde_json, AnyElement, AnyViewHandle, AppContext, Element, Entity, ModelHandle, Task, View, ViewContext, ViewHandle, }; use isahc::Request; @@ -230,8 +230,8 @@ impl View for FeedbackEditor { "FeedbackEditor" } - fn render(&mut self, cx: &mut ViewContext) -> Element { - ChildView::new(&self.editor, cx).into_element() + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { + ChildView::new(&self.editor, cx).into_any() } fn focus_in(&mut self, _: AnyViewHandle, cx: &mut ViewContext) { @@ -255,7 +255,7 @@ impl Item for FeedbackEditor { _: Option, style: &theme::Tab, _: &AppContext, - ) -> Element { + ) -> AnyElement { Flex::row() .with_child( Svg::new("icons/feedback_16.svg") @@ -271,7 +271,7 @@ impl Item for FeedbackEditor { .aligned() .contained(), ) - .into_element() + .into_any() } fn for_each_project_item(&self, cx: &AppContext, f: &mut dyn FnMut(usize, &dyn project::Item)) { diff --git a/crates/feedback/src/feedback_info_text.rs b/crates/feedback/src/feedback_info_text.rs index 1d8643535190ae651fb539a7ba8d672b9c8abb79..b557c4f7e1fa49b549e5c6bf4ab5e0f6ad3ec8be 100644 --- a/crates/feedback/src/feedback_info_text.rs +++ b/crates/feedback/src/feedback_info_text.rs @@ -1,7 +1,7 @@ use gpui::{ elements::{Flex, Label, MouseEventHandler, ParentElement, Text}, platform::{CursorStyle, MouseButton}, - Drawable, Element, Entity, View, ViewContext, ViewHandle, + AnyElement, Element, Entity, View, ViewContext, ViewHandle, }; use settings::Settings; use workspace::{item::ItemHandle, ToolbarItemLocation, ToolbarItemView}; @@ -29,7 +29,7 @@ impl View for FeedbackInfoText { "FeedbackInfoText" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let theme = cx.global::().theme.clone(); Flex::row() @@ -68,7 +68,7 @@ impl View for FeedbackInfoText { .aligned() .left() .clipped() - .into_element() + .into_any() } } diff --git a/crates/feedback/src/submit_feedback_button.rs b/crates/feedback/src/submit_feedback_button.rs index 642befebb78af68b1c171f2eb974a727c28f602e..918c74bed8fa0aa4d83847f69c4b2d2eb5e5bb8f 100644 --- a/crates/feedback/src/submit_feedback_button.rs +++ b/crates/feedback/src/submit_feedback_button.rs @@ -1,7 +1,7 @@ use gpui::{ elements::{Label, MouseEventHandler}, platform::{CursorStyle, MouseButton}, - Drawable, Element, Entity, View, ViewContext, ViewHandle, + AnyElement, Element, Entity, View, ViewContext, ViewHandle, }; use settings::Settings; use workspace::{item::ItemHandle, ToolbarItemLocation, ToolbarItemView}; @@ -29,7 +29,7 @@ impl View for SubmitFeedbackButton { "SubmitFeedbackButton" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let theme = cx.global::().theme.clone(); enum SubmitFeedbackButton {} MouseEventHandler::::new(0, cx, |state, _| { @@ -52,7 +52,7 @@ impl View for SubmitFeedbackButton { theme.tooltip.clone(), cx, ) - .into_element() + .into_any() } } diff --git a/crates/file_finder/src/file_finder.rs b/crates/file_finder/src/file_finder.rs index 1b1eb3090f08e9e9cc67ec44203f4f86c41e96c0..f00430feb7e16d02eebdbcf3a9f8c142243675a9 100644 --- a/crates/file_finder/src/file_finder.rs +++ b/crates/file_finder/src/file_finder.rs @@ -246,7 +246,7 @@ impl PickerDelegate for FileFinderDelegate { mouse_state: &mut MouseState, selected: bool, cx: &AppContext, - ) -> Element> { + ) -> AnyElement> { let path_match = &self.matches[ix]; let settings = cx.global::(); let style = settings.theme.picker.item.style_for(mouse_state, selected); @@ -262,7 +262,7 @@ impl PickerDelegate for FileFinderDelegate { .flex(1., false) .contained() .with_style(style.container) - .into_named_element("match") + .into_any_named("match") } } diff --git a/crates/go_to_line/src/go_to_line.rs b/crates/go_to_line/src/go_to_line.rs index 76fe0f94c85df25963e146c959cac5863a9c5a38..90287e927072779b0f2eb73eb14ef60792eb54e5 100644 --- a/crates/go_to_line/src/go_to_line.rs +++ b/crates/go_to_line/src/go_to_line.rs @@ -143,7 +143,7 @@ impl View for GoToLine { "GoToLine" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let theme = &cx.global::().theme.picker; let label = format!( @@ -168,7 +168,7 @@ impl View for GoToLine { .with_style(theme.container) .constrained() .with_max_width(500.0) - .into_named_element("go to line") + .into_any_named("go to line") } fn focus_in(&mut self, _: AnyViewHandle, cx: &mut ViewContext) { diff --git a/crates/gpui/examples/text.rs b/crates/gpui/examples/text.rs index 4450c3e4d53ad93590b4ea3cdf97fcae800ab595..10aa61fde5bb89edc5235a593351e3a758782d0c 100644 --- a/crates/gpui/examples/text.rs +++ b/crates/gpui/examples/text.rs @@ -2,7 +2,7 @@ use gpui::{ color::Color, fonts::{Properties, Weight}, text_layout::RunStyle, - Drawable, Element, Quad, SceneBuilder, View, ViewContext, + AnyElement, Element, Quad, SceneBuilder, View, ViewContext, }; use log::LevelFilter; use pathfinder_geometry::rect::RectF; @@ -30,12 +30,12 @@ impl gpui::View for TextView { "View" } - fn render(&mut self, _: &mut gpui::ViewContext) -> Element { - TextElement.into_element() + fn render(&mut self, _: &mut gpui::ViewContext) -> AnyElement { + TextElement.into_any() } } -impl Drawable for TextElement { +impl Element for TextElement { type LayoutState = (); type PaintState = (); diff --git a/crates/gpui/src/app.rs b/crates/gpui/src/app.rs index db3fa42491ebba791619a677dedd3427b624a0d0..175d11e4a42a25313f1a1edcd8255f7aad79a831 100644 --- a/crates/gpui/src/app.rs +++ b/crates/gpui/src/app.rs @@ -41,7 +41,7 @@ pub use test_app_context::{ContextHandle, TestAppContext}; use window_input_handler::WindowInputHandler; use crate::{ - elements::{AnyRootElement, Element, RootElement}, + elements::{AnyElement, AnyRootElement, RootElement}, executor::{self, Task}, keymap_matcher::{self, Binding, KeymapContext, KeymapMatcher, Keystroke, MatchResult}, platform::{ @@ -69,7 +69,7 @@ pub trait Entity: 'static { pub trait View: Entity + Sized { fn ui_name() -> &'static str; - fn render(&mut self, cx: &mut ViewContext<'_, '_, '_, Self>) -> Element; + fn render(&mut self, cx: &mut ViewContext<'_, '_, '_, Self>) -> AnyElement; fn focus_in(&mut self, _: AnyViewHandle, _: &mut ViewContext) {} fn focus_out(&mut self, _: AnyViewHandle, _: &mut ViewContext) {} fn key_down(&mut self, _: &KeyDownEvent, _: &mut ViewContext) -> bool { @@ -4683,9 +4683,9 @@ mod tests { } impl super::View for View { - fn render(&mut self, _: &mut ViewContext) -> Element { + fn render(&mut self, _: &mut ViewContext) -> AnyElement { post_inc(&mut self.render_count); - Empty::new().into_element() + Empty::new().into_any() } fn ui_name() -> &'static str { @@ -4736,8 +4736,8 @@ mod tests { } impl super::View for View { - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } fn ui_name() -> &'static str { @@ -4806,14 +4806,14 @@ mod tests { } impl super::View for View { - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { enum Handler {} let mouse_down_count = self.mouse_down_count.clone(); MouseEventHandler::::new(0, cx, |_, _| Empty::new()) .on_down(MouseButton::Left, move |_, _, _| { mouse_down_count.fetch_add(1, SeqCst); }) - .into_element() + .into_any() } fn ui_name() -> &'static str { @@ -4872,8 +4872,8 @@ mod tests { "View" } - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } } @@ -5390,8 +5390,8 @@ mod tests { } impl super::View for View { - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } fn ui_name() -> &'static str { @@ -5457,8 +5457,8 @@ mod tests { } impl super::View for View { - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } fn ui_name() -> &'static str { @@ -5638,8 +5638,8 @@ mod tests { } impl View for ViewA { - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } fn ui_name() -> &'static str { @@ -5656,8 +5656,8 @@ mod tests { } impl View for ViewB { - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } fn ui_name() -> &'static str { @@ -5804,8 +5804,8 @@ mod tests { } impl super::View for View { - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } fn ui_name() -> &'static str { @@ -5931,16 +5931,16 @@ mod tests { } impl super::View for View1 { - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } fn ui_name() -> &'static str { "View1" } } impl super::View for View2 { - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } fn ui_name() -> &'static str { "View2" @@ -6109,8 +6109,8 @@ mod tests { "test view" } - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } } @@ -6171,8 +6171,8 @@ mod tests { "test view" } - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_named_element(format!("render count: {}", post_inc(&mut self.0))) + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any_named(format!("render count: {}", post_inc(&mut self.0))) } } @@ -6260,8 +6260,8 @@ mod tests { "test view" } - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } } @@ -6340,9 +6340,9 @@ mod tests { "child view" } - fn render(&mut self, _: &mut ViewContext) -> Element { + fn render(&mut self, _: &mut ViewContext) -> AnyElement { self.rendered.set(true); - Empty::new().into_element() + Empty::new().into_any() } } @@ -6365,11 +6365,11 @@ mod tests { "parent view" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { if let Some(child) = self.child.as_ref() { - ChildView::new(child, cx).into_element() + ChildView::new(child, cx).into_any() } else { - Empty::new().into_element() + Empty::new().into_any() } } } @@ -6407,8 +6407,8 @@ mod tests { "TestView" } - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } } } diff --git a/crates/gpui/src/app/window.rs b/crates/gpui/src/app/window.rs index 306e83652a1bdc4b8d32b02ed1b7cdcdcc28dc54..82a5f13cf2798d90afa08d7cf7116b22d3542cf9 100644 --- a/crates/gpui/src/app/window.rs +++ b/crates/gpui/src/app/window.rs @@ -14,7 +14,7 @@ use crate::{ text_layout::TextLayoutCache, util::post_inc, Action, AnyModelHandle, AnyView, AnyViewHandle, AnyWeakModelHandle, AnyWeakViewHandle, - AppContext, Drawable, Effect, Entity, Handle, ModelContext, ModelHandle, MouseRegion, + AppContext, Effect, Element, Entity, Handle, ModelContext, ModelHandle, MouseRegion, MouseRegionId, ParentId, ReadModel, ReadView, SceneBuilder, Subscription, UpdateModel, UpdateView, UpgradeModelHandle, UpgradeViewHandle, View, ViewContext, ViewHandle, WeakModelHandle, WeakViewHandle, WindowInvalidation, @@ -1391,7 +1391,7 @@ impl ChildView { } } -impl Drawable for ChildView { +impl Element for ChildView { type LayoutState = (); type PaintState = (); diff --git a/crates/gpui/src/elements.rs b/crates/gpui/src/elements.rs index 6247722d987aa0558b8ba3838e2cf9eb288632a8..09b9c4058994c92cd16d502aae74f6c779ff660e 100644 --- a/crates/gpui/src/elements.rs +++ b/crates/gpui/src/elements.rs @@ -47,7 +47,7 @@ use std::{ }; use util::ResultExt; -pub trait Drawable: 'static { +pub trait Element: 'static { type LayoutState; type PaintState; @@ -92,24 +92,22 @@ pub trait Drawable: 'static { cx: &ViewContext, ) -> serde_json::Value; - fn into_element(self) -> Element + fn into_any(self) -> AnyElement where Self: 'static + Sized, { - Element { - drawable: Box::new(Lifecycle::Init { element: self }), - view_type: PhantomData, + AnyElement { + state: Box::new(ElementState::Init { element: self }), name: None, } } - fn into_named_element(self, name: impl Into>) -> Element + fn into_any_named(self, name: impl Into>) -> AnyElement where Self: 'static + Sized, { - Element { - drawable: Box::new(Lifecycle::Init { element: self }), - view_type: PhantomData, + AnyElement { + state: Box::new(ElementState::Init { element: self }), name: Some(name.into()), } } @@ -119,7 +117,7 @@ pub trait Drawable: 'static { Self: 'static + Sized, { RootElement { - element: self.into_element(), + element: self.into_any(), view: cx.handle().downgrade(), } } @@ -128,49 +126,49 @@ pub trait Drawable: 'static { where Self: 'static + Sized, { - ConstrainedBox::new(self.into_element()) + ConstrainedBox::new(self.into_any()) } fn aligned(self) -> Align where Self: 'static + Sized, { - Align::new(self.into_element()) + Align::new(self.into_any()) } fn clipped(self) -> Clipped where Self: 'static + Sized, { - Clipped::new(self.into_element()) + Clipped::new(self.into_any()) } fn contained(self) -> Container where Self: 'static + Sized, { - Container::new(self.into_element()) + Container::new(self.into_any()) } fn expanded(self) -> Expanded where Self: 'static + Sized, { - Expanded::new(self.into_element()) + Expanded::new(self.into_any()) } fn flex(self, flex: f32, expanded: bool) -> FlexItem where Self: 'static + Sized, { - FlexItem::new(self.into_element()).flex(flex, expanded) + FlexItem::new(self.into_any()).flex(flex, expanded) } fn flex_float(self) -> FlexItem where Self: 'static + Sized, { - FlexItem::new(self.into_element()).float() + FlexItem::new(self.into_any()).float() } fn with_tooltip( @@ -184,7 +182,7 @@ pub trait Drawable: 'static { where Self: 'static + Sized, { - Tooltip::new::(id, text, action, style, self.into_element(), cx) + Tooltip::new::(id, text, action, style, self.into_any(), cx) } fn with_resize_handle( @@ -199,7 +197,7 @@ pub trait Drawable: 'static { Self: 'static + Sized, { Resizable::new::( - self.into_element(), + self.into_any(), element_id, side, handle_size, @@ -209,7 +207,7 @@ pub trait Drawable: 'static { } } -trait AnyDrawable { +trait AnyElementState { fn layout( &mut self, constraint: SizeConstraint, @@ -240,7 +238,7 @@ trait AnyDrawable { fn metadata(&self) -> Option<&dyn Any>; } -enum Lifecycle> { +enum ElementState> { Empty, Init { element: E, @@ -261,7 +259,7 @@ enum Lifecycle> { }, } -impl> AnyDrawable for Lifecycle { +impl> AnyElementState for ElementState { fn layout( &mut self, constraint: SizeConstraint, @@ -270,16 +268,16 @@ impl> AnyDrawable for Lifecycle { ) -> Vector2F { let result; *self = match mem::take(self) { - Lifecycle::Empty => unreachable!(), - Lifecycle::Init { mut element } - | Lifecycle::PostLayout { mut element, .. } - | Lifecycle::PostPaint { mut element, .. } => { + ElementState::Empty => unreachable!(), + ElementState::Init { mut element } + | ElementState::PostLayout { mut element, .. } + | ElementState::PostPaint { mut element, .. } => { let (size, layout) = element.layout(constraint, view, cx); debug_assert!(size.x().is_finite()); debug_assert!(size.y().is_finite()); result = size; - Lifecycle::PostLayout { + ElementState::PostLayout { element, constraint, size, @@ -299,7 +297,7 @@ impl> AnyDrawable for Lifecycle { cx: &mut ViewContext, ) { *self = match mem::take(self) { - Lifecycle::PostLayout { + ElementState::PostLayout { mut element, constraint, size, @@ -307,7 +305,7 @@ impl> AnyDrawable for Lifecycle { } => { let bounds = RectF::new(origin, size); let paint = element.paint(scene, bounds, visible_bounds, &mut layout, view, cx); - Lifecycle::PostPaint { + ElementState::PostPaint { element, constraint, bounds, @@ -316,7 +314,7 @@ impl> AnyDrawable for Lifecycle { paint, } } - Lifecycle::PostPaint { + ElementState::PostPaint { mut element, constraint, bounds, @@ -325,7 +323,7 @@ impl> AnyDrawable for Lifecycle { } => { let bounds = RectF::new(origin, bounds.size()); let paint = element.paint(scene, bounds, visible_bounds, &mut layout, view, cx); - Lifecycle::PostPaint { + ElementState::PostPaint { element, constraint, bounds, @@ -334,8 +332,8 @@ impl> AnyDrawable for Lifecycle { paint, } } - Lifecycle::Empty => panic!("invalid element lifecycle state"), - Lifecycle::Init { .. } => { + ElementState::Empty => panic!("invalid element lifecycle state"), + ElementState::Init { .. } => { panic!("invalid element lifecycle state, paint called before layout") } } @@ -347,7 +345,7 @@ impl> AnyDrawable for Lifecycle { view: &V, cx: &ViewContext, ) -> Option { - if let Lifecycle::PostPaint { + if let ElementState::PostPaint { element, bounds, visible_bounds, @@ -372,24 +370,26 @@ impl> AnyDrawable for Lifecycle { fn size(&self) -> Vector2F { match self { - Lifecycle::Empty | Lifecycle::Init { .. } => panic!("invalid element lifecycle state"), - Lifecycle::PostLayout { size, .. } => *size, - Lifecycle::PostPaint { bounds, .. } => bounds.size(), + ElementState::Empty | ElementState::Init { .. } => { + panic!("invalid element lifecycle state") + } + ElementState::PostLayout { size, .. } => *size, + ElementState::PostPaint { bounds, .. } => bounds.size(), } } fn metadata(&self) -> Option<&dyn Any> { match self { - Lifecycle::Empty => unreachable!(), - Lifecycle::Init { element } - | Lifecycle::PostLayout { element, .. } - | Lifecycle::PostPaint { element, .. } => element.metadata(), + ElementState::Empty => unreachable!(), + ElementState::Init { element } + | ElementState::PostLayout { element, .. } + | ElementState::PostPaint { element, .. } => element.metadata(), } } fn debug(&self, view: &V, cx: &ViewContext) -> serde_json::Value { match self { - Lifecycle::PostPaint { + ElementState::PostPaint { element, constraint, bounds, @@ -419,25 +419,24 @@ impl> AnyDrawable for Lifecycle { } } -impl> Default for Lifecycle { +impl> Default for ElementState { fn default() -> Self { Self::Empty } } -pub struct Element { - drawable: Box>, - view_type: PhantomData, +pub struct AnyElement { + state: Box>, name: Option>, } -impl Element { +impl AnyElement { pub fn name(&self) -> Option<&str> { self.name.as_deref() } pub fn metadata(&self) -> Option<&T> { - self.drawable + self.state .metadata() .and_then(|data| data.downcast_ref::()) } @@ -448,7 +447,7 @@ impl Element { view: &mut V, cx: &mut ViewContext, ) -> Vector2F { - self.drawable.layout(constraint, view, cx) + self.state.layout(constraint, view, cx) } pub fn paint( @@ -459,7 +458,7 @@ impl Element { view: &mut V, cx: &mut ViewContext, ) { - self.drawable.paint(scene, origin, visible_bounds, view, cx); + self.state.paint(scene, origin, visible_bounds, view, cx); } pub fn rect_for_text_range( @@ -468,15 +467,15 @@ impl Element { view: &V, cx: &ViewContext, ) -> Option { - self.drawable.rect_for_text_range(range_utf16, view, cx) + self.state.rect_for_text_range(range_utf16, view, cx) } pub fn size(&self) -> Vector2F { - self.drawable.size() + self.state.size() } pub fn debug(&self, view: &V, cx: &ViewContext) -> json::Value { - let mut value = self.drawable.debug(view, cx); + let mut value = self.state.debug(view, cx); if let Some(name) = &self.name { if let json::Value::Object(map) = &mut value { @@ -495,11 +494,11 @@ impl Element { T: 'static, F: FnOnce(Option<&T>) -> R, { - f(self.drawable.metadata().and_then(|m| m.downcast_ref())) + f(self.state.metadata().and_then(|m| m.downcast_ref())) } } -impl Drawable for Element { +impl Element for AnyElement { type LayoutState = (); type PaintState = (); @@ -549,7 +548,7 @@ impl Drawable for Element { self.debug(view, cx) } - fn into_element(self) -> Element + fn into_any(self) -> AnyElement where Self: Sized, { @@ -558,18 +557,18 @@ impl Drawable for Element { } pub struct RootElement { - element: Element, + element: AnyElement, view: WeakViewHandle, } impl RootElement { - pub fn new(element: Element, view: WeakViewHandle) -> Self { + pub fn new(element: AnyElement, view: WeakViewHandle) -> Self { Self { element, view } } } pub trait Component: 'static { - fn render(&self, view: &mut V, cx: &mut ViewContext) -> Element; + fn render(&self, view: &mut V, cx: &mut ViewContext) -> AnyElement; } pub struct ComponentHost> { @@ -591,8 +590,8 @@ impl> DerefMut for ComponentHost { } } -impl> Drawable for ComponentHost { - type LayoutState = Element; +impl> Element for ComponentHost { + type LayoutState = AnyElement; type PaintState = (); fn layout( @@ -600,7 +599,7 @@ impl> Drawable for ComponentHost { constraint: SizeConstraint, view: &mut V, cx: &mut ViewContext, - ) -> (Vector2F, Element) { + ) -> (Vector2F, AnyElement) { let mut element = self.component.render(view, cx); let size = element.layout(constraint, view, cx); (size, element) @@ -611,7 +610,7 @@ impl> Drawable for ComponentHost { scene: &mut SceneBuilder, bounds: RectF, visible_bounds: RectF, - element: &mut Element, + element: &mut AnyElement, view: &mut V, cx: &mut ViewContext, ) { @@ -623,7 +622,7 @@ impl> Drawable for ComponentHost { range_utf16: Range, _: RectF, _: RectF, - element: &Element, + element: &AnyElement, _: &(), view: &V, cx: &ViewContext, @@ -634,7 +633,7 @@ impl> Drawable for ComponentHost { fn debug( &self, _: RectF, - element: &Element, + element: &AnyElement, _: &(), view: &V, cx: &ViewContext, @@ -718,7 +717,7 @@ impl AnyRootElement for RootElement { } } -impl Drawable for RootElement { +impl Element for RootElement { type LayoutState = (); type PaintState = (); @@ -775,27 +774,27 @@ impl Drawable for RootElement { } } -pub trait ParentElement<'a, V: View>: Extend> + Sized { - fn add_children>(&mut self, children: impl IntoIterator) { - self.extend(children.into_iter().map(|child| child.into_element())); +pub trait ParentElement<'a, V: View>: Extend> + Sized { + fn add_children>(&mut self, children: impl IntoIterator) { + self.extend(children.into_iter().map(|child| child.into_any())); } - fn add_child>(&mut self, child: D) { - self.extend(Some(child.into_element())); + fn add_child>(&mut self, child: D) { + self.extend(Some(child.into_any())); } - fn with_children>(mut self, children: impl IntoIterator) -> Self { - self.extend(children.into_iter().map(|child| child.into_element())); + fn with_children>(mut self, children: impl IntoIterator) -> Self { + self.extend(children.into_iter().map(|child| child.into_any())); self } - fn with_child>(mut self, child: D) -> Self { - self.extend(Some(child.into_element())); + fn with_child>(mut self, child: D) -> Self { + self.extend(Some(child.into_any())); self } } -impl<'a, V: View, T> ParentElement<'a, V> for T where T: Extend> {} +impl<'a, V: View, T> ParentElement<'a, V> for T where T: Extend> {} pub fn constrain_size_preserving_aspect_ratio(max_size: Vector2F, size: Vector2F) -> Vector2F { if max_size.x().is_infinite() && max_size.y().is_infinite() { diff --git a/crates/gpui/src/elements/align.rs b/crates/gpui/src/elements/align.rs index efe4a705fbcb8c6276bd374c0f805bc4f678b4f7..b3724c923f0704c5ac9e15920e6db1e5f334d00e 100644 --- a/crates/gpui/src/elements/align.rs +++ b/crates/gpui/src/elements/align.rs @@ -1,18 +1,18 @@ use crate::{ geometry::{rect::RectF, vector::Vector2F}, - json, Drawable, Element, SceneBuilder, SizeConstraint, View, ViewContext, + json, AnyElement, Element, SceneBuilder, SizeConstraint, View, ViewContext, }; use json::ToJson; use serde_json::json; pub struct Align { - child: Element, + child: AnyElement, alignment: Vector2F, } impl Align { - pub fn new(child: Element) -> Self { + pub fn new(child: AnyElement) -> Self { Self { child, alignment: Vector2F::zero(), @@ -40,7 +40,7 @@ impl Align { } } -impl Drawable for Align { +impl Element for Align { type LayoutState = (); type PaintState = (); diff --git a/crates/gpui/src/elements/canvas.rs b/crates/gpui/src/elements/canvas.rs index 78b3b61c19311bb4f98b58b1a982ee0845708ff0..36ff4e2cf409222de491694d88ccb3e4aabbe087 100644 --- a/crates/gpui/src/elements/canvas.rs +++ b/crates/gpui/src/elements/canvas.rs @@ -1,6 +1,6 @@ use std::marker::PhantomData; -use super::Drawable; +use super::Element; use crate::{ json::{self, json}, SceneBuilder, View, ViewContext, @@ -23,7 +23,7 @@ where } } -impl Drawable for Canvas +impl Element for Canvas where F: 'static + FnMut(&mut SceneBuilder, RectF, RectF, &mut V, &mut ViewContext), { diff --git a/crates/gpui/src/elements/clipped.rs b/crates/gpui/src/elements/clipped.rs index 721d45b489ac6aae08cd8d37b36ea8bee17013eb..85466972d39e4957bd12b81d1c0ad556b776b6ce 100644 --- a/crates/gpui/src/elements/clipped.rs +++ b/crates/gpui/src/elements/clipped.rs @@ -3,19 +3,19 @@ use std::ops::Range; use pathfinder_geometry::{rect::RectF, vector::Vector2F}; use serde_json::json; -use crate::{json, Drawable, Element, SceneBuilder, SizeConstraint, View, ViewContext}; +use crate::{json, AnyElement, Element, SceneBuilder, SizeConstraint, View, ViewContext}; pub struct Clipped { - child: Element, + child: AnyElement, } impl Clipped { - pub fn new(child: Element) -> Self { + pub fn new(child: AnyElement) -> Self { Self { child } } } -impl Drawable for Clipped { +impl Element for Clipped { type LayoutState = (); type PaintState = (); diff --git a/crates/gpui/src/elements/constrained_box.rs b/crates/gpui/src/elements/constrained_box.rs index efea1df127b48f0f6638ca5a02d99a01721c9042..fc033c9b433360df8a8e958dd9f75e1b84c3317e 100644 --- a/crates/gpui/src/elements/constrained_box.rs +++ b/crates/gpui/src/elements/constrained_box.rs @@ -5,11 +5,11 @@ use serde_json::json; use crate::{ geometry::{rect::RectF, vector::Vector2F}, - json, Drawable, Element, SceneBuilder, SizeConstraint, View, ViewContext, + json, AnyElement, Element, SceneBuilder, SizeConstraint, View, ViewContext, }; pub struct ConstrainedBox { - child: Element, + child: AnyElement, constraint: Constraint, } @@ -28,9 +28,9 @@ impl ToJson for Constraint { } impl ConstrainedBox { - pub fn new(child: impl Drawable) -> Self { + pub fn new(child: impl Element) -> Self { Self { - child: child.into_element(), + child: child.into_any(), constraint: Constraint::Static(Default::default()), } } @@ -130,7 +130,7 @@ impl ConstrainedBox { } } -impl Drawable for ConstrainedBox { +impl Element for ConstrainedBox { type LayoutState = (); type PaintState = (); diff --git a/crates/gpui/src/elements/container.rs b/crates/gpui/src/elements/container.rs index bd85b5779db6d960c835ae5ada626f78dd499912..1cbef9a52e5319fbf1b5130e503e504bfc63bd03 100644 --- a/crates/gpui/src/elements/container.rs +++ b/crates/gpui/src/elements/container.rs @@ -10,7 +10,7 @@ use crate::{ json::ToJson, platform::CursorStyle, scene::{self, Border, CursorRegion, Quad}, - Drawable, Element, SceneBuilder, SizeConstraint, View, ViewContext, + AnyElement, Element, SceneBuilder, SizeConstraint, View, ViewContext, }; use serde::Deserialize; use serde_json::json; @@ -36,12 +36,12 @@ pub struct ContainerStyle { } pub struct Container { - child: Element, + child: AnyElement, style: ContainerStyle, } impl Container { - pub fn new(child: Element) -> Self { + pub fn new(child: AnyElement) -> Self { Self { child, style: Default::default(), @@ -184,7 +184,7 @@ impl Container { } } -impl Drawable for Container { +impl Element for Container { type LayoutState = (); type PaintState = (); diff --git a/crates/gpui/src/elements/empty.rs b/crates/gpui/src/elements/empty.rs index b07364e289efd5efcff538fcfd37740b55e46190..d1a3cbafdb1d7b6df56f249d9176219b5ef9e581 100644 --- a/crates/gpui/src/elements/empty.rs +++ b/crates/gpui/src/elements/empty.rs @@ -8,7 +8,7 @@ use crate::{ json::{json, ToJson}, SceneBuilder, View, ViewContext, }; -use crate::{Drawable, SizeConstraint}; +use crate::{Element, SizeConstraint}; #[derive(Default)] pub struct Empty { @@ -26,7 +26,7 @@ impl Empty { } } -impl Drawable for Empty { +impl Element for Empty { type LayoutState = (); type PaintState = (); diff --git a/crates/gpui/src/elements/expanded.rs b/crates/gpui/src/elements/expanded.rs index 0004b3ac3dfa7592d22fb287353b9e8d86a2e775..8a59191b7a541e0cc88d82d231bbf04b16b32e8b 100644 --- a/crates/gpui/src/elements/expanded.rs +++ b/crates/gpui/src/elements/expanded.rs @@ -2,20 +2,20 @@ use std::ops::Range; use crate::{ geometry::{rect::RectF, vector::Vector2F}, - json, Drawable, Element, SceneBuilder, SizeConstraint, View, ViewContext, + json, AnyElement, Element, SceneBuilder, SizeConstraint, View, ViewContext, }; use serde_json::json; pub struct Expanded { - child: Element, + child: AnyElement, full_width: bool, full_height: bool, } impl Expanded { - pub fn new(child: impl Drawable) -> Self { + pub fn new(child: impl Element) -> Self { Self { - child: child.into_element(), + child: child.into_any(), full_width: true, full_height: true, } @@ -34,7 +34,7 @@ impl Expanded { } } -impl Drawable for Expanded { +impl Element for Expanded { type LayoutState = (); type PaintState = (); diff --git a/crates/gpui/src/elements/flex.rs b/crates/gpui/src/elements/flex.rs index 2357fe155393849c876396e3dc55a178ea855781..7fee0006f7c3b4acdc2c97c674acfb39683704c7 100644 --- a/crates/gpui/src/elements/flex.rs +++ b/crates/gpui/src/elements/flex.rs @@ -2,7 +2,7 @@ use std::{any::Any, cell::Cell, f32::INFINITY, ops::Range, rc::Rc}; use crate::{ json::{self, ToJson, Value}, - Axis, Drawable, Element, ElementStateHandle, SceneBuilder, SizeConstraint, Vector2FExt, View, + AnyElement, Axis, Element, ElementStateHandle, SceneBuilder, SizeConstraint, Vector2FExt, View, ViewContext, }; use pathfinder_geometry::{ @@ -19,7 +19,7 @@ struct ScrollState { pub struct Flex { axis: Axis, - children: Vec>, + children: Vec>, scroll_state: Option<(ElementStateHandle>, usize)>, child_alignment: f32, } @@ -111,13 +111,13 @@ impl Flex { } } -impl Extend> for Flex { - fn extend>>(&mut self, children: T) { +impl Extend> for Flex { + fn extend>>(&mut self, children: T) { self.children.extend(children); } } -impl Drawable for Flex { +impl Element for Flex { type LayoutState = f32; type PaintState = (); @@ -399,17 +399,17 @@ struct FlexParentData { pub struct FlexItem { metadata: FlexParentData, - child: Element, + child: AnyElement, } impl FlexItem { - pub fn new(child: impl Drawable) -> Self { + pub fn new(child: impl Element) -> Self { FlexItem { metadata: FlexParentData { flex: None, float: false, }, - child: child.into_element(), + child: child.into_any(), } } @@ -424,7 +424,7 @@ impl FlexItem { } } -impl Drawable for FlexItem { +impl Element for FlexItem { type LayoutState = (); type PaintState = (); diff --git a/crates/gpui/src/elements/hook.rs b/crates/gpui/src/elements/hook.rs index 577bdb904a7a0000eda99254ba13a8e17e4845b4..cb22760285ef0a745657b48803490b7dc9f862ab 100644 --- a/crates/gpui/src/elements/hook.rs +++ b/crates/gpui/src/elements/hook.rs @@ -3,18 +3,18 @@ use std::ops::Range; use crate::{ geometry::{rect::RectF, vector::Vector2F}, json::json, - Drawable, Element, SceneBuilder, SizeConstraint, View, ViewContext, + AnyElement, Element, SceneBuilder, SizeConstraint, View, ViewContext, }; pub struct Hook { - child: Element, + child: AnyElement, after_layout: Option)>>, } impl Hook { - pub fn new(child: impl Drawable) -> Self { + pub fn new(child: impl Element) -> Self { Self { - child: child.into_element(), + child: child.into_any(), after_layout: None, } } @@ -28,7 +28,7 @@ impl Hook { } } -impl Drawable for Hook { +impl Element for Hook { type LayoutState = (); type PaintState = (); diff --git a/crates/gpui/src/elements/image.rs b/crates/gpui/src/elements/image.rs index 480cc8bdd3a0812b68d1ba9d6e0b0999fa642cbe..162446c1f022added77887c8f69dc6dbb02196ce 100644 --- a/crates/gpui/src/elements/image.rs +++ b/crates/gpui/src/elements/image.rs @@ -5,7 +5,7 @@ use crate::{ vector::{vec2f, Vector2F}, }, json::{json, ToJson}, - scene, Border, Drawable, ImageData, SceneBuilder, SizeConstraint, View, ViewContext, + scene, Border, Element, ImageData, SceneBuilder, SizeConstraint, View, ViewContext, }; use serde::Deserialize; use std::{ops::Range, sync::Arc}; @@ -55,7 +55,7 @@ impl Image { } } -impl Drawable for Image { +impl Element for Image { type LayoutState = Option>; type PaintState = (); diff --git a/crates/gpui/src/elements/keystroke_label.rs b/crates/gpui/src/elements/keystroke_label.rs index c5b6b58fe98709d04c9eac7db563bf25a24ad401..b179d781275542fcfc4e037a590859dc27876a64 100644 --- a/crates/gpui/src/elements/keystroke_label.rs +++ b/crates/gpui/src/elements/keystroke_label.rs @@ -2,7 +2,7 @@ use crate::{ elements::*, fonts::TextStyle, geometry::{rect::RectF, vector::Vector2F}, - Action, Element, SizeConstraint, + Action, AnyElement, SizeConstraint, }; use serde_json::json; @@ -31,8 +31,8 @@ impl KeystrokeLabel { } } -impl Drawable for KeystrokeLabel { - type LayoutState = Element; +impl Element for KeystrokeLabel { + type LayoutState = AnyElement; type PaintState = (); fn layout( @@ -40,7 +40,7 @@ impl Drawable for KeystrokeLabel { constraint: SizeConstraint, view: &mut V, cx: &mut ViewContext, - ) -> (Vector2F, Element) { + ) -> (Vector2F, AnyElement) { let mut element = if let Some(keystrokes) = cx.keystrokes_for_action(self.view_id, self.action.as_ref()) { @@ -50,9 +50,9 @@ impl Drawable for KeystrokeLabel { .contained() .with_style(self.container_style) })) - .into_element() + .into_any() } else { - Empty::new().collapsed().into_element() + Empty::new().collapsed().into_any() }; let size = element.layout(constraint, view, cx); @@ -64,7 +64,7 @@ impl Drawable for KeystrokeLabel { scene: &mut SceneBuilder, bounds: RectF, visible_bounds: RectF, - element: &mut Element, + element: &mut AnyElement, view: &mut V, cx: &mut ViewContext, ) { @@ -87,7 +87,7 @@ impl Drawable for KeystrokeLabel { fn debug( &self, _: RectF, - element: &Element, + element: &AnyElement, _: &(), view: &V, cx: &ViewContext, diff --git a/crates/gpui/src/elements/label.rs b/crates/gpui/src/elements/label.rs index f59be7e191f50f47d8c9251533519142a1a4167e..2669f4d5f2f1ba058845cef44ce816feb28f8339 100644 --- a/crates/gpui/src/elements/label.rs +++ b/crates/gpui/src/elements/label.rs @@ -8,7 +8,7 @@ use crate::{ }, json::{ToJson, Value}, text_layout::{Line, RunStyle}, - Drawable, SceneBuilder, SizeConstraint, View, ViewContext, + Element, SceneBuilder, SizeConstraint, View, ViewContext, }; use serde::Deserialize; use serde_json::json; @@ -127,7 +127,7 @@ impl Label { } } -impl Drawable for Label { +impl Element for Label { type LayoutState = Line; type PaintState = (); diff --git a/crates/gpui/src/elements/list.rs b/crates/gpui/src/elements/list.rs index f9b51c956e852b4ca95b6eecfe15f4035110e833..84043f5e1ff135df9596ffe15029d700f96a6458 100644 --- a/crates/gpui/src/elements/list.rs +++ b/crates/gpui/src/elements/list.rs @@ -4,7 +4,7 @@ use crate::{ vector::{vec2f, Vector2F}, }, json::json, - Drawable, Element, MouseRegion, SceneBuilder, SizeConstraint, View, ViewContext, + AnyElement, Element, MouseRegion, SceneBuilder, SizeConstraint, View, ViewContext, }; use std::{cell::RefCell, collections::VecDeque, fmt::Debug, ops::Range, rc::Rc}; use sum_tree::{Bias, SumTree}; @@ -23,7 +23,7 @@ pub enum Orientation { struct StateInner { last_layout_width: Option, - render_item: Box) -> Element>, + render_item: Box) -> AnyElement>, rendered_range: Range, items: SumTree>, logical_scroll_top: Option, @@ -41,7 +41,7 @@ pub struct ListOffset { enum ListItem { Unrendered, - Rendered(Rc>>), + Rendered(Rc>>), Removed(f32), } @@ -91,7 +91,7 @@ impl List { } } -impl Drawable for List { +impl Element for List { type LayoutState = ListOffset; type PaintState = (); @@ -354,14 +354,14 @@ impl ListState { mut render_item: F, ) -> Self where - D: Drawable, + D: Element, F: 'static + FnMut(&mut V, usize, &mut ViewContext) -> D, { let mut items = SumTree::new(); items.extend((0..element_count).map(|_| ListItem::Unrendered), &()); Self(Rc::new(RefCell::new(StateInner { last_layout_width: None, - render_item: Box::new(move |view, ix, cx| render_item(view, ix, cx).into_element()), + render_item: Box::new(move |view, ix, cx| render_item(view, ix, cx).into_any()), rendered_range: 0..0, items, logical_scroll_top: None, @@ -453,7 +453,7 @@ impl StateInner { constraint: SizeConstraint, view: &mut V, cx: &mut ViewContext, - ) -> Option>>> { + ) -> Option>>> { if let Some(ListItem::Rendered(element)) = existing_element { Some(element.clone()) } else { @@ -475,7 +475,7 @@ impl StateInner { &'a self, bounds: RectF, scroll_top: &ListOffset, - ) -> impl Iterator>>, Vector2F)> + 'a { + ) -> impl Iterator>>, Vector2F)> + 'a { let mut item_origin = bounds.origin() - vec2f(0., scroll_top.offset_in_item); let mut cursor = self.items.cursor::(); cursor.seek(&Count(scroll_top.item_ix), Bias::Right, &()); @@ -660,7 +660,7 @@ mod tests { let elements = elements.clone(); move |_, ix, _| { let (id, height) = elements.borrow()[ix]; - TestElement::new(id, height).into_element() + TestElement::new(id, height).into_any() } }); @@ -765,7 +765,7 @@ mod tests { let elements = elements.clone(); move |_, ix, _| { let (id, height) = elements.borrow()[ix]; - TestElement::new(id, height).into_element() + TestElement::new(id, height).into_any() } }); @@ -920,8 +920,8 @@ mod tests { "TestView" } - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } } @@ -939,7 +939,7 @@ mod tests { } } - impl Drawable for TestElement { + impl Element for TestElement { type LayoutState = (); type PaintState = (); diff --git a/crates/gpui/src/elements/mouse_event_handler.rs b/crates/gpui/src/elements/mouse_event_handler.rs index 22863de6109cb65a6e2bb3d20f97ce0287582d11..8abcf5f8354b4ef98d77492468146a6502cc13a0 100644 --- a/crates/gpui/src/elements/mouse_event_handler.rs +++ b/crates/gpui/src/elements/mouse_event_handler.rs @@ -10,14 +10,14 @@ use crate::{ CursorRegion, HandlerSet, MouseClick, MouseDown, MouseDownOut, MouseDrag, MouseHover, MouseMove, MouseMoveOut, MouseScrollWheel, MouseUp, MouseUpOut, }, - Drawable, Element, EventContext, MouseRegion, MouseState, SceneBuilder, SizeConstraint, View, + AnyElement, Element, EventContext, MouseRegion, MouseState, SceneBuilder, SizeConstraint, View, ViewContext, }; use serde_json::json; use std::{marker::PhantomData, ops::Range}; pub struct MouseEventHandler { - child: Element, + child: AnyElement, region_id: usize, cursor_style: Option, handlers: HandlerSet, @@ -34,11 +34,11 @@ pub struct MouseEventHandler { impl MouseEventHandler { pub fn new(region_id: usize, cx: &mut ViewContext, render_child: F) -> Self where - D: Drawable, + D: Element, F: FnOnce(&mut MouseState, &mut ViewContext) -> D, { let mut mouse_state = cx.mouse_state::(region_id); - let child = render_child(&mut mouse_state, cx).into_element(); + let child = render_child(&mut mouse_state, cx).into_any(); let notify_on_hover = mouse_state.accessed_hovered(); let notify_on_click = mouse_state.accessed_clicked(); Self { @@ -60,7 +60,7 @@ impl MouseEventHandler { /// gets the opportunity pub fn above(region_id: usize, cx: &mut ViewContext, render_child: F) -> Self where - D: Drawable, + D: Element, F: FnOnce(&mut MouseState, &mut ViewContext) -> D, { let mut handler = Self::new(region_id, cx, render_child); @@ -212,7 +212,7 @@ impl MouseEventHandler { } } -impl Drawable for MouseEventHandler { +impl Element for MouseEventHandler { type LayoutState = (); type PaintState = (); diff --git a/crates/gpui/src/elements/overlay.rs b/crates/gpui/src/elements/overlay.rs index 71057f50a7e391430c94491419fd14aaf079660b..0abd1231e2ec2dab8acf70017583fb12848b0df7 100644 --- a/crates/gpui/src/elements/overlay.rs +++ b/crates/gpui/src/elements/overlay.rs @@ -3,12 +3,12 @@ use std::ops::Range; use crate::{ geometry::{rect::RectF, vector::Vector2F}, json::ToJson, - Axis, Drawable, Element, MouseRegion, SceneBuilder, SizeConstraint, View, ViewContext, + AnyElement, Axis, Element, MouseRegion, SceneBuilder, SizeConstraint, View, ViewContext, }; use serde_json::json; pub struct Overlay { - child: Element, + child: AnyElement, anchor_position: Option, anchor_corner: AnchorCorner, fit_mode: OverlayFitMode, @@ -73,9 +73,9 @@ impl AnchorCorner { } impl Overlay { - pub fn new(child: impl Drawable) -> Self { + pub fn new(child: impl Element) -> Self { Self { - child: child.into_element(), + child: child.into_any(), anchor_position: None, anchor_corner: AnchorCorner::TopLeft, fit_mode: OverlayFitMode::None, @@ -116,7 +116,7 @@ impl Overlay { } } -impl Drawable for Overlay { +impl Element for Overlay { type LayoutState = Vector2F; type PaintState = (); diff --git a/crates/gpui/src/elements/resizable.rs b/crates/gpui/src/elements/resizable.rs index aaf35cd507fcc7025804abdb9e0e9828334e098a..37e15541f40ad565a23c14c68876fe6a3e8ad87f 100644 --- a/crates/gpui/src/elements/resizable.rs +++ b/crates/gpui/src/elements/resizable.rs @@ -7,7 +7,7 @@ use crate::{ geometry::rect::RectF, platform::{CursorStyle, MouseButton}, scene::MouseDrag, - Axis, Drawable, Element, ElementStateHandle, MouseRegion, SceneBuilder, View, ViewContext, + AnyElement, Axis, Element, ElementStateHandle, MouseRegion, SceneBuilder, View, ViewContext, }; use super::{ConstrainedBox, Hook}; @@ -78,14 +78,14 @@ struct ResizeHandleState { pub struct Resizable { side: Side, handle_size: f32, - child: Element, + child: AnyElement, state: Rc, _state_handle: ElementStateHandle>, } impl Resizable { pub fn new( - child: Element, + child: AnyElement, element_id: usize, side: Side, handle_size: f32, @@ -115,7 +115,7 @@ impl Resizable { state.actual_dimension.set(side.relevant_component(size)); } }) - .into_element(); + .into_any(); Self { side, @@ -131,7 +131,7 @@ impl Resizable { } } -impl Drawable for Resizable { +impl Element for Resizable { type LayoutState = (); type PaintState = (); diff --git a/crates/gpui/src/elements/stack.rs b/crates/gpui/src/elements/stack.rs index 46c1d5475c4b56270b340bcb68d30dc8f4c4c6ce..188f7012d4a3c360009876ee69e85621608f81da 100644 --- a/crates/gpui/src/elements/stack.rs +++ b/crates/gpui/src/elements/stack.rs @@ -3,13 +3,13 @@ use std::ops::Range; use crate::{ geometry::{rect::RectF, vector::Vector2F}, json::{self, json, ToJson}, - Drawable, Element, SceneBuilder, SizeConstraint, View, ViewContext, + Element, AnyElement, SceneBuilder, SizeConstraint, View, ViewContext, }; /// Element which renders it's children in a stack on top of each other. /// The first child determines the size of the others. pub struct Stack { - children: Vec>, + children: Vec>, } impl Default for Stack { @@ -26,7 +26,7 @@ impl Stack { } } -impl Drawable for Stack { +impl Element for Stack { type LayoutState = (); type PaintState = (); @@ -98,8 +98,8 @@ impl Drawable for Stack { } } -impl Extend> for Stack { - fn extend>>(&mut self, children: T) { +impl Extend> for Stack { + fn extend>>(&mut self, children: T) { self.children.extend(children) } } diff --git a/crates/gpui/src/elements/svg.rs b/crates/gpui/src/elements/svg.rs index 792a95880891ad357209e57c7415492c921abe7b..0f75be82fd1e7894f4c9864d71edcfee1de80a8a 100644 --- a/crates/gpui/src/elements/svg.rs +++ b/crates/gpui/src/elements/svg.rs @@ -8,7 +8,7 @@ use crate::{ rect::RectF, vector::{vec2f, Vector2F}, }, - scene, Drawable, SceneBuilder, SizeConstraint, View, ViewContext, + scene, Element, SceneBuilder, SizeConstraint, View, ViewContext, }; pub struct Svg { @@ -30,7 +30,7 @@ impl Svg { } } -impl Drawable for Svg { +impl Element for Svg { type LayoutState = Option; type PaintState = (); diff --git a/crates/gpui/src/elements/text.rs b/crates/gpui/src/elements/text.rs index 38e387209e592306010c96a9d6541af24124d8b3..3090a81c72e71dac60b31218d22f0ee94eb2a4c9 100644 --- a/crates/gpui/src/elements/text.rs +++ b/crates/gpui/src/elements/text.rs @@ -7,7 +7,7 @@ use crate::{ }, json::{ToJson, Value}, text_layout::{Line, RunStyle, ShapedBoundary}, - Drawable, FontCache, SceneBuilder, SizeConstraint, TextLayoutCache, View, ViewContext, + Element, FontCache, SceneBuilder, SizeConstraint, TextLayoutCache, View, ViewContext, }; use log::warn; use serde_json::json; @@ -52,7 +52,7 @@ impl Text { } } -impl Drawable for Text { +impl Element for Text { type LayoutState = LayoutState; type PaintState = (); @@ -276,7 +276,7 @@ pub fn layout_highlighted_chunks<'a>( #[cfg(test)] mod tests { use super::*; - use crate::{elements::Empty, fonts, AppContext, Element, Entity, View, ViewContext}; + use crate::{elements::Empty, fonts, AnyElement, AppContext, Entity, View, ViewContext}; #[crate::test(self)] fn test_soft_wrapping_with_carriage_returns(cx: &mut AppContext) { @@ -307,8 +307,8 @@ mod tests { "TestView" } - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } } } diff --git a/crates/gpui/src/elements/tooltip.rs b/crates/gpui/src/elements/tooltip.rs index 4b29886dc2a423ba05bd88de73b03aa9247ca55f..4cd924a48cc2b47667cac7012be92eec92571978 100644 --- a/crates/gpui/src/elements/tooltip.rs +++ b/crates/gpui/src/elements/tooltip.rs @@ -1,5 +1,5 @@ use super::{ - ContainerStyle, Drawable, Element, Flex, KeystrokeLabel, MouseEventHandler, Overlay, + AnyElement, ContainerStyle, Element, Flex, KeystrokeLabel, MouseEventHandler, Overlay, OverlayFitMode, ParentElement, Text, }; use crate::{ @@ -20,8 +20,8 @@ use util::ResultExt; const DEBOUNCE_TIMEOUT: Duration = Duration::from_millis(500); pub struct Tooltip { - child: Element, - tooltip: Option>, + child: AnyElement, + tooltip: Option>, _state: ElementStateHandle>, } @@ -55,7 +55,7 @@ impl Tooltip { text: String, action: Option>, style: TooltipStyle, - child: Element, + child: AnyElement, cx: &mut ViewContext, ) -> Self { struct ElementState(Tag); @@ -85,7 +85,7 @@ impl Tooltip { ) .with_fit_mode(OverlayFitMode::SwitchAnchor) .with_anchor_position(state.position.get()) - .into_element(), + .into_any(), ) } else { None @@ -117,7 +117,7 @@ impl Tooltip { cx.notify(); } }) - .into_element(); + .into_any(); Self { child, tooltip, @@ -131,7 +131,7 @@ impl Tooltip { style: TooltipStyle, action: Option>, measure: bool, - ) -> impl Drawable { + ) -> impl Element { Flex::row() .with_child({ let text = if let Some(max_text_width) = style.max_text_width { @@ -143,9 +143,9 @@ impl Tooltip { }; if measure { - text.flex(1., false).into_element() + text.flex(1., false).into_any() } else { - text.flex(1., false).aligned().into_element() + text.flex(1., false).aligned().into_any() } }) .with_children(action.and_then(|action| { @@ -156,9 +156,9 @@ impl Tooltip { style.keystroke.text, ); if measure { - Some(keystroke_label.into_element()) + Some(keystroke_label.into_any()) } else { - Some(keystroke_label.aligned().into_element()) + Some(keystroke_label.aligned().into_any()) } })) .contained() @@ -166,7 +166,7 @@ impl Tooltip { } } -impl Drawable for Tooltip { +impl Element for Tooltip { type LayoutState = (); type PaintState = (); diff --git a/crates/gpui/src/elements/uniform_list.rs b/crates/gpui/src/elements/uniform_list.rs index 38bf5cb12eb77606f73c3f12615e7788c3f9c5b3..e75425dc3f0b5b817762e0cc2bf268288c4433d0 100644 --- a/crates/gpui/src/elements/uniform_list.rs +++ b/crates/gpui/src/elements/uniform_list.rs @@ -1,4 +1,4 @@ -use super::{Drawable, SizeConstraint}; +use super::{Element, SizeConstraint}; use crate::{ geometry::{ rect::RectF, @@ -6,7 +6,7 @@ use crate::{ }, json::{self, json}, platform::ScrollWheelEvent, - Element, MouseRegion, SceneBuilder, View, ViewContext, + AnyElement, MouseRegion, SceneBuilder, View, ViewContext, }; use json::ToJson; use std::{cell::RefCell, cmp, ops::Range, rc::Rc}; @@ -39,14 +39,14 @@ struct StateInner { pub struct LayoutState { scroll_max: f32, item_height: f32, - items: Vec>, + items: Vec>, } pub struct UniformList { state: UniformListState, item_count: usize, #[allow(clippy::type_complexity)] - append_items: Box, &mut Vec>, &mut ViewContext)>, + append_items: Box, &mut Vec>, &mut ViewContext)>, padding_top: f32, padding_bottom: f32, get_width_from_item: Option, @@ -62,7 +62,7 @@ impl UniformList { ) -> Self where V: View, - F: 'static + Fn(&mut V, Range, &mut Vec>, &mut ViewContext), + F: 'static + Fn(&mut V, Range, &mut Vec>, &mut ViewContext), { Self { state, @@ -151,7 +151,7 @@ impl UniformList { } } -impl Drawable for UniformList { +impl Element for UniformList { type LayoutState = LayoutState; type PaintState = (); diff --git a/crates/gpui/src/gpui.rs b/crates/gpui/src/gpui.rs index 3708f7e9fea97755a706cc8b9bb4f2563bd9a477..a172667fb99ca53f077285d06a4ba12a5c6f0010 100644 --- a/crates/gpui/src/gpui.rs +++ b/crates/gpui/src/gpui.rs @@ -19,7 +19,7 @@ pub use scene::{Border, CursorRegion, MouseRegion, MouseRegionId, Quad, Scene, S pub mod text_layout; pub use text_layout::TextLayoutCache; mod util; -pub use elements::{Drawable, Element}; +pub use elements::{AnyElement, Element}; pub mod executor; pub use executor::Task; pub mod color; diff --git a/crates/gpui/src/test.rs b/crates/gpui/src/test.rs index 8200400acd294483c9439f36bf61897230770a2a..3b2a5e996037d12abb0210c777659a96f6b280c8 100644 --- a/crates/gpui/src/test.rs +++ b/crates/gpui/src/test.rs @@ -19,7 +19,7 @@ use crate::{ platform, platform::Platform, util::CwdBacktrace, - AppContext, Drawable, Element, Entity, FontCache, Handle, Subscription, TestAppContext, View, + AnyElement, AppContext, Element, Entity, FontCache, Handle, Subscription, TestAppContext, View, ViewContext, }; @@ -242,7 +242,7 @@ impl View for EmptyView { "empty view" } - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } } diff --git a/crates/gpui/src/views/select.rs b/crates/gpui/src/views/select.rs index c6c7f5d7a8e759b63637bde62a1e2bc7375de116..285f37639e9ae5ebcf0fad9d78c642d54e7181c5 100644 --- a/crates/gpui/src/views/select.rs +++ b/crates/gpui/src/views/select.rs @@ -7,7 +7,7 @@ use crate::{ pub struct Select { handle: WeakViewHandle, - render_item: Box Element>, + render_item: Box AnyElement>, selected_item_ix: usize, item_count: usize, is_open: bool, @@ -41,7 +41,7 @@ pub fn init(cx: &mut AppContext) { } impl Select { - pub fn new Element>( + pub fn new AnyElement>( item_count: usize, cx: &mut ViewContext, render_item: F, @@ -92,9 +92,9 @@ impl View for Select { "Select" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { if self.item_count == 0 { - return Empty::new().into_element(); + return Empty::new().into_any(); } enum Header {} @@ -149,7 +149,7 @@ impl View for Select { cx.dispatch_action(SelectItem(ix)) }, ) - .into_element() + .into_any() })) }, ) @@ -159,6 +159,6 @@ impl View for Select { .with_style(style.menu), )); } - result.into_element() + result.into_any() } } diff --git a/crates/language_selector/src/active_buffer_language.rs b/crates/language_selector/src/active_buffer_language.rs index fe05ed85a2509cf49c260d25c23c47e0a2ffa017..17e53b378c19aed464a5e7ef4b65262fe2ccaa03 100644 --- a/crates/language_selector/src/active_buffer_language.rs +++ b/crates/language_selector/src/active_buffer_language.rs @@ -50,7 +50,7 @@ impl View for ActiveBufferLanguage { "ActiveBufferLanguage" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { if let Some(active_language) = self.active_language.as_ref() { let active_language_text = if let Some(active_language_text) = active_language { active_language_text.to_string() @@ -69,9 +69,9 @@ impl View for ActiveBufferLanguage { .on_click(MouseButton::Left, |_, _, cx| { cx.dispatch_action(crate::Toggle) }) - .into_element() + .into_any() } else { - Empty::new().into_element() + Empty::new().into_any() } } } diff --git a/crates/language_selector/src/language_selector.rs b/crates/language_selector/src/language_selector.rs index 1f349108ba3f1b0897d45c9a6f824c90141b028d..27ddd63e758b50d8e6d61c18276a18673bed27e0 100644 --- a/crates/language_selector/src/language_selector.rs +++ b/crates/language_selector/src/language_selector.rs @@ -182,7 +182,7 @@ impl PickerDelegate for LanguageSelectorDelegate { mouse_state: &mut MouseState, selected: bool, cx: &AppContext, - ) -> Element> { + ) -> AnyElement> { let settings = cx.global::(); let theme = &settings.theme; let mat = &self.matches[ix]; @@ -197,6 +197,6 @@ impl PickerDelegate for LanguageSelectorDelegate { .with_highlights(mat.positions.clone()) .contained() .with_style(style.container) - .into_element() + .into_any() } } diff --git a/crates/outline/src/outline.rs b/crates/outline/src/outline.rs index ae044678a5d590049accd765549346eedc804307..5cbbbf13021462409e93a3c89f437c668985ad98 100644 --- a/crates/outline/src/outline.rs +++ b/crates/outline/src/outline.rs @@ -202,7 +202,7 @@ impl PickerDelegate for OutlineViewDelegate { mouse_state: &mut MouseState, selected: bool, cx: &AppContext, - ) -> Element> { + ) -> AnyElement> { let settings = cx.global::(); let string_match = &self.matches[ix]; let style = settings.theme.picker.item.style_for(mouse_state, selected); @@ -220,6 +220,6 @@ impl PickerDelegate for OutlineViewDelegate { .with_padding_left(20. * outline_item.depth as f32) .contained() .with_style(style.container) - .into_element() + .into_any() } } diff --git a/crates/picker/src/picker.rs b/crates/picker/src/picker.rs index 9b2da2435f05765c1593e95115efb13775352efe..7274962a5b782618aa8a392f7049d5618f1f5c3a 100644 --- a/crates/picker/src/picker.rs +++ b/crates/picker/src/picker.rs @@ -4,7 +4,7 @@ use gpui::{ geometry::vector::{vec2f, Vector2F}, keymap_matcher::KeymapContext, platform::{CursorStyle, MouseButton}, - AnyViewHandle, AppContext, Axis, Element, Entity, MouseState, Task, View, ViewContext, + AnyElement, AnyViewHandle, AppContext, Axis, Entity, MouseState, Task, View, ViewContext, ViewHandle, }; use menu::{Cancel, Confirm, SelectFirst, SelectIndex, SelectLast, SelectNext, SelectPrev}; @@ -41,7 +41,7 @@ pub trait PickerDelegate: Sized + 'static { state: &mut MouseState, selected: bool, cx: &AppContext, - ) -> Element>; + ) -> AnyElement>; fn center_selection_after_match_updates(&self) -> bool { false } @@ -56,7 +56,7 @@ impl View for Picker { "Picker" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let theme = (self.theme.lock())(&cx.global::().theme); let query = self.query(cx); let match_count = self.delegate.match_count(); @@ -85,7 +85,7 @@ impl View for Picker { Label::new("No matches", theme.no_matches.label.clone()) .contained() .with_style(theme.no_matches.container) - .into_element(), + .into_any(), ) } } else { @@ -108,14 +108,14 @@ impl View for Picker { cx.dispatch_action(SelectIndex(ix)) }) .with_cursor_style(CursorStyle::PointingHand) - .into_element() + .into_any() })); }, ) .contained() .with_margin_top(6.0) .flex(1., false) - .into_element(), + .into_any(), ) }) .contained() @@ -123,7 +123,7 @@ impl View for Picker { .constrained() .with_max_width(self.max_size.x()) .with_max_height(self.max_size.y()) - .into_named_element("picker") + .into_any_named("picker") } fn keymap_context(&self, _: &AppContext) -> KeymapContext { diff --git a/crates/project_panel/src/project_panel.rs b/crates/project_panel/src/project_panel.rs index b540b7f3bf1bdc7fe329ef8095b81ac4a412f1b7..c144ba569ef23b2c3de800a1601780affc6970f3 100644 --- a/crates/project_panel/src/project_panel.rs +++ b/crates/project_panel/src/project_panel.rs @@ -13,7 +13,7 @@ use gpui::{ impl_internal_actions, keymap_matcher::KeymapContext, platform::{CursorStyle, MouseButton, PromptLevel}, - AppContext, ClipboardItem, Drawable, Element, Entity, ModelHandle, Task, View, ViewContext, + AnyElement, AppContext, ClipboardItem, Element, Entity, ModelHandle, Task, View, ViewContext, ViewHandle, }; use menu::{Confirm, SelectNext, SelectPrev}; @@ -1098,7 +1098,7 @@ impl ProjectPanel { row_container_style: ContainerStyle, style: &ProjectPanelEntry, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let kind = details.kind; let show_editor = details.is_editing && !details.is_processing; @@ -1127,21 +1127,21 @@ impl ProjectPanel { .aligned() .left() .flex(1.0, true) - .into_element() + .into_any() } else { Label::new(details.filename.clone(), style.text.clone()) .contained() .with_margin_left(style.icon_spacing) .aligned() .left() - .into_element() + .into_any() }) .constrained() .with_height(style.height) .contained() .with_style(row_container_style) .with_padding_left(padding) - .into_named_element("project panel entry visual element") + .into_any_named("project panel entry visual element") } fn render_entry( @@ -1151,7 +1151,7 @@ impl ProjectPanel { dragged_entry_destination: &mut Option>, theme: &theme::ProjectPanel, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let kind = details.kind; let path = details.path.clone(); let padding = theme.container.padding.left + details.depth as f32 * theme.indent_width; @@ -1255,7 +1255,7 @@ impl ProjectPanel { } }) .with_cursor_style(CursorStyle::PointingHand) - .into_named_element("project panel entry") + .into_any_named("project panel entry") } } @@ -1264,7 +1264,7 @@ impl View for ProjectPanel { "ProjectPanel" } - fn render(&mut self, cx: &mut gpui::ViewContext) -> gpui::Element { + fn render(&mut self, cx: &mut gpui::ViewContext) -> gpui::AnyElement { enum ProjectPanel {} let theme = &cx.global::().theme.project_panel; let mut container_style = theme.container; @@ -1319,7 +1319,7 @@ impl View for ProjectPanel { }), ) .with_child(ChildView::new(&self.context_menu, cx)) - .into_named_element("project panel") + .into_any_named("project panel") } else { Flex::column() .with_child( @@ -1348,7 +1348,7 @@ impl View for ProjectPanel { ) .contained() .with_style(container_style) - .into_named_element("empty project panel") + .into_any_named("empty project panel") } } diff --git a/crates/project_symbols/src/project_symbols.rs b/crates/project_symbols/src/project_symbols.rs index 32c04a43bfb8261ae4f44d0da00d0fcf3edd20d5..c730c4d38a965b31a27ba51cfcc03d637a2cb82b 100644 --- a/crates/project_symbols/src/project_symbols.rs +++ b/crates/project_symbols/src/project_symbols.rs @@ -201,7 +201,7 @@ impl PickerDelegate for ProjectSymbolsDelegate { mouse_state: &mut MouseState, selected: bool, cx: &AppContext, - ) -> Element> { + ) -> AnyElement> { let string_match = &self.matches[ix]; let settings = cx.global::(); let style = &settings.theme.picker.item; @@ -240,7 +240,7 @@ impl PickerDelegate for ProjectSymbolsDelegate { ) .contained() .with_style(current_style.container) - .into_element() + .into_any() } } diff --git a/crates/recent_projects/src/highlighted_workspace_location.rs b/crates/recent_projects/src/highlighted_workspace_location.rs index 7decf0830d62fc31c464af05e2efe39f85e3680d..6d056d100aa4e04a1825d80759d68dd1c571aa47 100644 --- a/crates/recent_projects/src/highlighted_workspace_location.rs +++ b/crates/recent_projects/src/highlighted_workspace_location.rs @@ -3,7 +3,7 @@ use std::path::Path; use fuzzy::StringMatch; use gpui::{ elements::{Label, LabelStyle}, - Drawable, Element, View, + Element, AnyElement, View, }; use workspace::WorkspaceLocation; @@ -42,10 +42,10 @@ impl HighlightedText { } } - pub fn render(self, style: impl Into) -> Element { + pub fn render(self, style: impl Into) -> AnyElement { Label::new(self.text, style) .with_highlights(self.highlight_positions) - .into_element() + .into_any() } } diff --git a/crates/recent_projects/src/recent_projects.rs b/crates/recent_projects/src/recent_projects.rs index 4a441ab8e6392ea5453c96bc51fa9e758294fe2e..70acfcd5d5cd2614e7b11130f56710d28c88f13d 100644 --- a/crates/recent_projects/src/recent_projects.rs +++ b/crates/recent_projects/src/recent_projects.rs @@ -5,7 +5,7 @@ use gpui::{ actions, anyhow::Result, elements::{Flex, ParentElement}, - AppContext, Drawable, Element, Task, ViewContext, + AnyElement, AppContext, Element, Task, ViewContext, }; use highlighted_workspace_location::HighlightedWorkspaceLocation; use ordered_float::OrderedFloat; @@ -156,7 +156,7 @@ impl PickerDelegate for RecentProjectsDelegate { mouse_state: &mut gpui::MouseState, selected: bool, cx: &gpui::AppContext, - ) -> Element> { + ) -> AnyElement> { let settings = cx.global::(); let string_match = &self.matches[ix]; let style = settings.theme.picker.item.style_for(mouse_state, selected); @@ -177,6 +177,6 @@ impl PickerDelegate for RecentProjectsDelegate { .flex(1., false) .contained() .with_style(style.container) - .into_named_element("match") + .into_any_named("match") } } diff --git a/crates/search/src/buffer_search.rs b/crates/search/src/buffer_search.rs index c6baa613fd42a5605ec853265be1fa920ada3865..629a58387c25afe4c4e804a792cdff69259b1d4c 100644 --- a/crates/search/src/buffer_search.rs +++ b/crates/search/src/buffer_search.rs @@ -92,7 +92,7 @@ impl View for BufferSearchBar { } } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let theme = cx.global::().theme.clone(); let editor_container = if self.query_contains_error { theme.search.invalid_editor @@ -178,7 +178,7 @@ impl View for BufferSearchBar { .with_child(self.render_close_button(&theme.search, cx)) .contained() .with_style(theme.search.container) - .into_named_element("search bar") + .into_any_named("search bar") } } @@ -319,7 +319,7 @@ impl BufferSearchBar { icon: &'static str, option: SearchOption, cx: &mut ViewContext, - ) -> Option> { + ) -> Option> { if !option_supported { return None; } @@ -349,7 +349,7 @@ impl BufferSearchBar { tooltip_style, cx, ) - .into_element(), + .into_any(), ) } @@ -358,7 +358,7 @@ impl BufferSearchBar { icon: &'static str, direction: Direction, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let action: Box; let tooltip; match direction { @@ -397,14 +397,14 @@ impl BufferSearchBar { tooltip_style, cx, ) - .into_element() + .into_any() } fn render_close_button( &self, theme: &theme::Search, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let action = Box::new(Dismiss); let tooltip = "Dismiss Buffer Search"; let tooltip_style = cx.global::().theme.tooltip.clone(); @@ -428,7 +428,7 @@ impl BufferSearchBar { }) .with_cursor_style(CursorStyle::PointingHand) .with_tooltip::(0, tooltip.to_string(), Some(action), tooltip_style, cx) - .into_element() + .into_any() } fn deploy(pane: &mut Pane, action: &Deploy, cx: &mut ViewContext) { diff --git a/crates/search/src/project_search.rs b/crates/search/src/project_search.rs index d358c96c8adbcec23dd3f86ea79b1776d687f518..18a3171209a7faaef9753fc6726a3fc18ff66b60 100644 --- a/crates/search/src/project_search.rs +++ b/crates/search/src/project_search.rs @@ -12,7 +12,7 @@ use gpui::{ actions, elements::*, platform::{CursorStyle, MouseButton}, - Action, AnyViewHandle, AppContext, Element, Entity, ModelContext, ModelHandle, Subscription, + Action, AnyElement, AnyViewHandle, AppContext, Entity, ModelContext, ModelHandle, Subscription, Task, View, ViewContext, ViewHandle, WeakModelHandle, WeakViewHandle, }; use menu::Confirm; @@ -178,7 +178,7 @@ impl View for ProjectSearchView { "ProjectSearchView" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let model = &self.model.read(cx); if model.match_ranges.is_empty() { enum Status {} @@ -201,11 +201,11 @@ impl View for ProjectSearchView { .on_down(MouseButton::Left, |_, _, cx| { cx.focus_parent_view(); }) - .into_named_element("project search view") + .into_any_named("project search view") } else { ChildView::new(&self.results_editor, cx) .flex(1., true) - .into_named_element("project search view") + .into_any_named("project search view") } } @@ -253,7 +253,7 @@ impl Item for ProjectSearchView { _detail: Option, tab_theme: &theme::Tab, cx: &AppContext, - ) -> Element { + ) -> AnyElement { Flex::row() .with_child( Svg::new("icons/magnifying_glass_12.svg") @@ -269,7 +269,7 @@ impl Item for ProjectSearchView { Label::new(query_text, tab_theme.label.clone()).aligned() })) - .into_element() + .into_any() } fn for_each_project_item(&self, cx: &AppContext, f: &mut dyn FnMut(usize, &dyn project::Item)) { @@ -748,7 +748,7 @@ impl ProjectSearchBar { icon: &'static str, direction: Direction, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let action: Box; let tooltip; match direction { @@ -787,7 +787,7 @@ impl ProjectSearchBar { tooltip_style, cx, ) - .into_element() + .into_any() } fn render_option_button( @@ -795,7 +795,7 @@ impl ProjectSearchBar { icon: &'static str, option: SearchOption, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let tooltip_style = cx.global::().theme.tooltip.clone(); let is_active = self.is_option_enabled(option, cx); MouseEventHandler::::new(option as usize, cx, |state, cx| { @@ -820,7 +820,7 @@ impl ProjectSearchBar { tooltip_style, cx, ) - .into_element() + .into_any() } fn is_option_enabled(&self, option: SearchOption, cx: &AppContext) -> bool { @@ -846,7 +846,7 @@ impl View for ProjectSearchBar { "ProjectSearchBar" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { if let Some(search) = self.active_project_search.as_ref() { let search = search.read(cx); let theme = cx.global::().theme.clone(); @@ -908,9 +908,9 @@ impl View for ProjectSearchBar { .with_style(theme.search.container) .aligned() .left() - .into_named_element("project search") + .into_any_named("project search") } else { - Empty::new().into_element() + Empty::new().into_any() } } } diff --git a/crates/settings/src/settings_file.rs b/crates/settings/src/settings_file.rs index 80078e8165feb92fa3de941c4e38130df124886a..c261879a58750d1247c7c6f9801f8b0d1fcded19 100644 --- a/crates/settings/src/settings_file.rs +++ b/crates/settings/src/settings_file.rs @@ -94,8 +94,8 @@ mod tests { "TestView" } - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } } diff --git a/crates/terminal_view/src/terminal_button.rs b/crates/terminal_view/src/terminal_button.rs index 7a8466564952481fe9244255d71665cc9327a845..e1c8edc0c76fce3885f640970cb5a1c33ed0b375 100644 --- a/crates/terminal_view/src/terminal_button.rs +++ b/crates/terminal_view/src/terminal_button.rs @@ -3,7 +3,7 @@ use gpui::{ elements::*, impl_internal_actions, platform::{CursorStyle, MouseButton}, - AppContext, Drawable, Element, Entity, View, ViewContext, ViewHandle, WeakModelHandle, + AnyElement, AppContext, Element, Entity, View, ViewContext, ViewHandle, WeakModelHandle, WeakViewHandle, }; use settings::Settings; @@ -42,11 +42,11 @@ impl View for TerminalButton { "TerminalButton" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let workspace = self.workspace.upgrade(cx); let project = match workspace { Some(workspace) => workspace.read(cx).project().read(cx), - None => return Empty::new().into_element(), + None => return Empty::new().into_any(), }; let focused_view = cx.focused_view_id(); @@ -79,7 +79,7 @@ impl View for TerminalButton { .constrained() .with_width(style.icon_size) .aligned() - .into_named_element("terminals-icon"), + .into_any_named("terminals-icon"), ) .with_children(has_terminals.then(|| { Label::new(terminal_count.to_string(), style.label.text.clone()) @@ -112,7 +112,7 @@ impl View for TerminalButton { ), ) .with_child(ChildView::new(&self.popup_menu, cx).aligned().top().right()) - .into_named_element("terminal button") + .into_any_named("terminal button") } } diff --git a/crates/terminal_view/src/terminal_element.rs b/crates/terminal_view/src/terminal_element.rs index 8ddd248be97e6a75840642b9a1a69d728f6173b0..b34c78b58b5fbef0d7e891e83f047e078230b339 100644 --- a/crates/terminal_view/src/terminal_element.rs +++ b/crates/terminal_view/src/terminal_element.rs @@ -10,7 +10,7 @@ use gpui::{ platform::{CursorStyle, MouseButton}, serde_json::json, text_layout::{Line, RunStyle}, - Drawable, Element, EventContext, FontCache, ModelContext, MouseRegion, Quad, SceneBuilder, + AnyElement, Element, EventContext, FontCache, ModelContext, MouseRegion, Quad, SceneBuilder, SizeConstraint, TextLayoutCache, ViewContext, WeakModelHandle, }; use itertools::Itertools; @@ -45,7 +45,7 @@ pub struct LayoutState { size: TerminalSize, mode: TermMode, display_offset: usize, - hyperlink_tooltip: Option>, + hyperlink_tooltip: Option>, } ///Helper struct for converting data between alacritty's cursor points, and displayed cursor points @@ -551,7 +551,7 @@ impl TerminalElement { } } -impl Drawable for TerminalElement { +impl Element for TerminalElement { type LayoutState = LayoutState; type PaintState = (); @@ -603,7 +603,7 @@ impl Drawable for TerminalElement { .with_tooltip::(id, uri, None, tooltip_style, cx), ) .with_position_mode(gpui::elements::OverlayPositionMode::Local) - .into_element(); + .into_any(); tooltip.layout( SizeConstraint::new(Vector2F::zero(), cx.window_size()), diff --git a/crates/terminal_view/src/terminal_view.rs b/crates/terminal_view/src/terminal_view.rs index 2a4a4c3432d0908e7037741b405f2900621ff4dd..b7ca3c01c7392ea1fa912b1037375e878b2fb8f6 100644 --- a/crates/terminal_view/src/terminal_view.rs +++ b/crates/terminal_view/src/terminal_view.rs @@ -18,7 +18,7 @@ use gpui::{ impl_actions, impl_internal_actions, keymap_matcher::{KeymapContext, Keystroke}, platform::KeyDownEvent, - AnyViewHandle, AppContext, Drawable, Element, Entity, ModelHandle, Task, View, ViewContext, + AnyElement, AnyViewHandle, AppContext, Element, Entity, ModelHandle, Task, View, ViewContext, ViewHandle, WeakViewHandle, }; use project::{LocalWorktree, Project}; @@ -387,7 +387,7 @@ impl View for TerminalView { "Terminal" } - fn render(&mut self, cx: &mut gpui::ViewContext) -> Element { + fn render(&mut self, cx: &mut gpui::ViewContext) -> AnyElement { let terminal_handle = self.terminal.clone().downgrade(); let self_id = cx.view_id(); @@ -406,7 +406,7 @@ impl View for TerminalView { .contained(), ) .with_child(ChildView::new(&self.context_menu, cx)) - .into_element() + .into_any() } fn focus_in(&mut self, _: AnyViewHandle, cx: &mut ViewContext) { @@ -549,7 +549,7 @@ impl Item for TerminalView { _detail: Option, tab_theme: &theme::Tab, cx: &gpui::AppContext, - ) -> Element { + ) -> AnyElement { let title = self.terminal().read(cx).title(); Flex::row() @@ -563,7 +563,7 @@ impl Item for TerminalView { .with_margin_right(tab_theme.spacing), ) .with_child(Label::new(title, tab_theme.label.clone()).aligned()) - .into_element() + .into_any() } fn clone_on_split( diff --git a/crates/theme/src/ui.rs b/crates/theme/src/ui.rs index 74046c94b1f2bcbb3bbf3fba6c70a9d042c00f86..4e705b12b8a8b94c15ea10eb371477d16f3627c4 100644 --- a/crates/theme/src/ui.rs +++ b/crates/theme/src/ui.rs @@ -11,7 +11,7 @@ use gpui::{ platform, platform::MouseButton, scene::MouseClick, - Action, Drawable, EventContext, MouseState, View, ViewContext, + Action, Element, EventContext, MouseState, View, ViewContext, }; use serde::Deserialize; @@ -41,7 +41,7 @@ pub fn checkbox( checkbox_with_label(label, style, checked, cx, change) } -pub fn checkbox_with_label, V: View>( +pub fn checkbox_with_label, V: View>( label: D, style: &CheckboxStyle, checked: bool, @@ -223,12 +223,12 @@ pub fn modal( style: &ModalStyle, cx: &mut ViewContext, build_modal: F, -) -> impl Drawable +) -> impl Element where Tag: 'static, V: View, I: Into>, - D: Drawable, + D: Element, F: FnOnce(&mut gpui::ViewContext) -> D, { const TITLEBAR_HEIGHT: f32 = 28.; diff --git a/crates/theme_selector/src/theme_selector.rs b/crates/theme_selector/src/theme_selector.rs index 946e3ddbb78badb593555e5aac3760f00f1e0fc7..ee7066b80f93188b875615452ccf417f4737a7b0 100644 --- a/crates/theme_selector/src/theme_selector.rs +++ b/crates/theme_selector/src/theme_selector.rs @@ -1,5 +1,5 @@ use fuzzy::{match_strings, StringMatch, StringMatchCandidate}; -use gpui::{actions, elements::*, AppContext, Drawable, Element, MouseState, ViewContext}; +use gpui::{actions, elements::*, AnyElement, AppContext, Element, MouseState, ViewContext}; use picker::{Picker, PickerDelegate, PickerEvent}; use settings::{settings_file::SettingsFile, Settings}; use staff_mode::StaffMode; @@ -207,7 +207,7 @@ impl PickerDelegate for ThemeSelectorDelegate { mouse_state: &mut MouseState, selected: bool, cx: &AppContext, - ) -> Element> { + ) -> AnyElement> { let settings = cx.global::(); let theme = &settings.theme; let theme_match = &self.matches[ix]; @@ -217,6 +217,6 @@ impl PickerDelegate for ThemeSelectorDelegate { .with_highlights(theme_match.positions.clone()) .contained() .with_style(style.container) - .into_element() + .into_any() } } diff --git a/crates/theme_testbench/src/theme_testbench.rs b/crates/theme_testbench/src/theme_testbench.rs index 1127f89709f352fe21e113e3def57082e4a912d7..c18a580d07294ad06bfe8cecf7b367fb27079f8d 100644 --- a/crates/theme_testbench/src/theme_testbench.rs +++ b/crates/theme_testbench/src/theme_testbench.rs @@ -2,11 +2,11 @@ use gpui::{ actions, color::Color, elements::{ - Canvas, Container, ContainerStyle, Element, Flex, Label, Margin, MouseEventHandler, + AnyElement, Canvas, Container, ContainerStyle, Flex, Label, Margin, MouseEventHandler, Padding, ParentElement, }, fonts::TextStyle, - AppContext, Border, Drawable, Entity, ModelHandle, Quad, Task, View, ViewContext, ViewHandle, + AppContext, Border, Element, Entity, ModelHandle, Quad, Task, View, ViewContext, ViewHandle, WeakViewHandle, }; use project::Project; @@ -35,7 +35,7 @@ impl ThemeTestbench { } fn render_ramps(color_scheme: &ColorScheme) -> Flex { - fn display_ramp(ramp: &Vec) -> Element { + fn display_ramp(ramp: &Vec) -> AnyElement { Flex::row() .with_children(ramp.iter().cloned().map(|color| { Canvas::new(move |scene, bounds, _, _, _| { @@ -48,7 +48,7 @@ impl ThemeTestbench { .flex(1.0, false) })) .flex(1.0, false) - .into_element() + .into_any() } Flex::column() @@ -173,7 +173,7 @@ impl ThemeTestbench { style_set: &StyleSet, style_override: Option &Style>, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { enum TestBenchButton {} MouseEventHandler::::new(layer_index + button_index, cx, |state, cx| { let style = if let Some(style_override) = style_override { @@ -216,7 +216,7 @@ impl ThemeTestbench { }) }) .flex(1., true) - .into_element() + .into_any() } fn render_label(text: String, style: &Style, cx: &mut ViewContext) -> Label { @@ -251,7 +251,7 @@ impl View for ThemeTestbench { "ThemeTestbench" } - fn render(&mut self, cx: &mut gpui::ViewContext) -> Element { + fn render(&mut self, cx: &mut gpui::ViewContext) -> AnyElement { let color_scheme = &cx.global::().theme.clone().color_scheme; Flex::row() @@ -268,7 +268,7 @@ impl View for ThemeTestbench { .with_child(Self::render_layer(300, &color_scheme.highest, cx).flex(1., true)) .flex(1., false), ) - .into_element() + .into_any() } } @@ -278,11 +278,11 @@ impl Item for ThemeTestbench { _: Option, style: &theme::Tab, _: &AppContext, - ) -> Element { + ) -> AnyElement { Label::new("Theme Testbench", style.label.clone()) .aligned() .contained() - .into_element() + .into_any() } fn serialized_item_kind() -> Option<&'static str> { diff --git a/crates/welcome/src/base_keymap_picker.rs b/crates/welcome/src/base_keymap_picker.rs index b8ba7de5287629cd0e1d973a205dbdd30eb46a9d..1db340bde925eab0eb09a8cb42a9499dd9dd6ec8 100644 --- a/crates/welcome/src/base_keymap_picker.rs +++ b/crates/welcome/src/base_keymap_picker.rs @@ -3,7 +3,7 @@ use std::sync::Arc; use fuzzy::{match_strings, StringMatch, StringMatchCandidate}; use gpui::{ actions, - elements::{Drawable as _, Label}, + elements::{Element as _, Label}, AppContext, Task, ViewContext, }; use picker::{Picker, PickerDelegate, PickerEvent}; @@ -134,7 +134,7 @@ impl PickerDelegate for BaseKeymapSelectorDelegate { mouse_state: &mut gpui::MouseState, selected: bool, cx: &gpui::AppContext, - ) -> gpui::Element> { + ) -> gpui::AnyElement> { let theme = &cx.global::().theme; let keymap_match = &self.matches[ix]; let style = theme.picker.item.style_for(mouse_state, selected); @@ -143,6 +143,6 @@ impl PickerDelegate for BaseKeymapSelectorDelegate { .with_highlights(keymap_match.positions.clone()) .contained() .with_style(style.container) - .into_element() + .into_any() } } diff --git a/crates/welcome/src/welcome.rs b/crates/welcome/src/welcome.rs index e9eb66ee7dd002d623a48363e6f8170af1fb469b..d75bbea56ee594e892c07fac9b645bfc7dd868ed 100644 --- a/crates/welcome/src/welcome.rs +++ b/crates/welcome/src/welcome.rs @@ -5,7 +5,7 @@ use std::{borrow::Cow, sync::Arc}; use db::kvp::KEY_VALUE_STORE; use gpui::{ elements::{Flex, Label, ParentElement}, - AppContext, Drawable, Element, Entity, Subscription, View, ViewContext, + AnyElement, AppContext, Element, Entity, Subscription, View, ViewContext, }; use settings::{settings_file::SettingsFile, Settings}; @@ -55,7 +55,7 @@ impl View for WelcomePage { "WelcomePage" } - fn render(&mut self, cx: &mut gpui::ViewContext) -> Element { + fn render(&mut self, cx: &mut gpui::ViewContext) -> AnyElement { let self_handle = cx.handle(); let settings = cx.global::(); let theme = settings.theme.clone(); @@ -181,9 +181,9 @@ impl View for WelcomePage { .contained() .with_uniform_padding(10.) .aligned() - .into_element(), + .into_any(), ) - .into_named_element("welcome page") + .into_any_named("welcome page") } } @@ -205,14 +205,14 @@ impl Item for WelcomePage { _detail: Option, style: &theme::Tab, _cx: &gpui::AppContext, - ) -> Element { + ) -> AnyElement { Flex::row() .with_child( Label::new("Welcome to Zed!", style.label.clone()) .aligned() .contained(), ) - .into_element() + .into_any() } fn show_toolbar(&self) -> bool { diff --git a/crates/workspace/src/dock.rs b/crates/workspace/src/dock.rs index 19cc00654d7c90e4edd5c09bbf7d920b99f413fb..e4cd7ed14df0f8bd8600ad4986970cb73b0b8c42 100644 --- a/crates/workspace/src/dock.rs +++ b/crates/workspace/src/dock.rs @@ -9,7 +9,7 @@ use gpui::{ geometry::vector::Vector2F, impl_internal_actions, platform::{CursorStyle, MouseButton}, - AppContext, Border, Drawable, Element, SizeConstraint, ViewContext, ViewHandle, + AnyElement, AppContext, Border, Element, SizeConstraint, ViewContext, ViewHandle, }; use settings::{DockAnchor, Settings}; use theme::Theme; @@ -315,7 +315,7 @@ impl Dock { theme: &Theme, anchor: DockAnchor, cx: &mut ViewContext, - ) -> Option> { + ) -> Option> { let style = &theme.workspace.dock; self.position @@ -382,7 +382,7 @@ impl Dock { ) }) } - .into_element() + .into_any() } DockAnchor::Expanded => { enum ExpandedDockWash {} @@ -411,7 +411,7 @@ impl Dock { .contained() .with_style(style.maximized), ) - .into_element() + .into_any() } }) } diff --git a/crates/workspace/src/dock/toggle_dock_button.rs b/crates/workspace/src/dock/toggle_dock_button.rs index bea107221137e4e96285fd5e0e031b2642859493..babd08298a3eadb1599fbcad5190a5ab8ad6ba11 100644 --- a/crates/workspace/src/dock/toggle_dock_button.rs +++ b/crates/workspace/src/dock/toggle_dock_button.rs @@ -2,7 +2,7 @@ use gpui::{ elements::{Empty, MouseEventHandler, Svg}, platform::CursorStyle, platform::MouseButton, - Drawable, Element, Entity, View, ViewContext, ViewHandle, WeakViewHandle, + AnyElement, Element, Entity, View, ViewContext, ViewHandle, WeakViewHandle, }; use settings::Settings; @@ -34,11 +34,11 @@ impl View for ToggleDockButton { "Dock Toggle" } - fn render(&mut self, cx: &mut gpui::ViewContext) -> Element { + fn render(&mut self, cx: &mut gpui::ViewContext) -> AnyElement { let workspace = self.workspace.upgrade(cx); if workspace.is_none() { - return Empty::new().into_element(); + return Empty::new().into_any(); } let workspace = workspace.unwrap(); @@ -97,7 +97,7 @@ impl View for ToggleDockButton { cx, ) } - .into_element() + .into_any() } } diff --git a/crates/workspace/src/item.rs b/crates/workspace/src/item.rs index d1a2b8c2fe0c0a48e6deac68f795091a4ef94863..52c8a609082e25baf7708f85b77c4f50b63c4245 100644 --- a/crates/workspace/src/item.rs +++ b/crates/workspace/src/item.rs @@ -6,7 +6,7 @@ use crate::{ use anyhow::{anyhow, Result}; use client::{proto, Client}; use gpui::{ - fonts::HighlightStyle, AnyViewHandle, AppContext, Element, ModelHandle, Task, View, + fonts::HighlightStyle, AnyElement, AnyViewHandle, AppContext, ModelHandle, Task, View, ViewContext, ViewHandle, WeakViewHandle, WindowContext, }; use project::{Project, ProjectEntryId, ProjectPath}; @@ -59,7 +59,7 @@ pub trait Item: View { detail: Option, style: &theme::Tab, cx: &AppContext, - ) -> Element; + ) -> AnyElement; fn for_each_project_item(&self, _: &AppContext, _: &mut dyn FnMut(usize, &dyn project::Item)) {} fn is_singleton(&self, _cx: &AppContext) -> bool { false @@ -180,13 +180,13 @@ pub trait ItemHandle: 'static + fmt::Debug { detail: Option, style: &theme::Tab, cx: &AppContext, - ) -> Element; + ) -> AnyElement; fn dragged_tab_content( &self, detail: Option, style: &theme::Tab, cx: &AppContext, - ) -> Element; + ) -> AnyElement; fn project_path(&self, cx: &AppContext) -> Option; fn project_entry_ids(&self, cx: &AppContext) -> SmallVec<[ProjectEntryId; 3]>; fn project_item_model_ids(&self, cx: &AppContext) -> SmallVec<[usize; 3]>; @@ -283,7 +283,7 @@ impl ItemHandle for ViewHandle { detail: Option, style: &theme::Tab, cx: &AppContext, - ) -> Element { + ) -> AnyElement { self.read(cx).tab_content(detail, style, cx) } @@ -292,7 +292,7 @@ impl ItemHandle for ViewHandle { detail: Option, style: &theme::Tab, cx: &AppContext, - ) -> Element { + ) -> AnyElement { self.read(cx).tab_content(detail, style, cx) } @@ -770,7 +770,7 @@ pub(crate) mod test { use super::{Item, ItemEvent}; use crate::{sidebar::SidebarItem, ItemId, ItemNavHistory, Pane, Workspace, WorkspaceId}; use gpui::{ - elements::Empty, AppContext, Drawable, Element, Entity, ModelHandle, Task, View, + elements::Empty, AnyElement, AppContext, Element, Entity, ModelHandle, Task, View, ViewContext, ViewHandle, WeakViewHandle, }; use project::{Project, ProjectEntryId, ProjectPath, WorktreeId}; @@ -929,8 +929,8 @@ pub(crate) mod test { "TestItem" } - fn render(&mut self, _: &mut ViewContext) -> Element { - Empty::new().into_element() + fn render(&mut self, _: &mut ViewContext) -> AnyElement { + Empty::new().into_any() } } @@ -947,9 +947,9 @@ pub(crate) mod test { detail: Option, _: &theme::Tab, _: &AppContext, - ) -> Element { + ) -> AnyElement { self.tab_detail.set(detail); - Empty::new().into_element() + Empty::new().into_any() } fn for_each_project_item( diff --git a/crates/workspace/src/notifications.rs b/crates/workspace/src/notifications.rs index 6d941e0f601c24778619e9246522ea137dd3bd0f..05f8e98acd56f5026421643e6e9f8ad8bca01c6f 100644 --- a/crates/workspace/src/notifications.rs +++ b/crates/workspace/src/notifications.rs @@ -140,7 +140,7 @@ pub mod simple_message_notification { elements::{Flex, MouseEventHandler, Padding, ParentElement, Svg, Text}, impl_actions, platform::{CursorStyle, MouseButton}, - Action, AppContext, Drawable, Entity, View, ViewContext, + Action, AppContext, Element, Entity, View, ViewContext, }; use menu::Cancel; use serde::Deserialize; @@ -229,7 +229,7 @@ pub mod simple_message_notification { "MessageNotification" } - fn render(&mut self, cx: &mut gpui::ViewContext) -> gpui::Element { + fn render(&mut self, cx: &mut gpui::ViewContext) -> gpui::AnyElement { let theme = cx.global::().theme.clone(); let theme = &theme.simple_message_notification; @@ -317,7 +317,7 @@ pub mod simple_message_notification { } else { CursorStyle::Arrow }) - .into_element() + .into_any() } } diff --git a/crates/workspace/src/pane.rs b/crates/workspace/src/pane.rs index b0b8539ea621dd1f79f0c287fe67bdf58a6c9ea6..b7688fa9078753a8dd4efbfc6b281da316334c74 100644 --- a/crates/workspace/src/pane.rs +++ b/crates/workspace/src/pane.rs @@ -1356,7 +1356,7 @@ impl Pane { }); } - fn render_tabs(&mut self, cx: &mut ViewContext) -> impl Drawable { + fn render_tabs(&mut self, cx: &mut ViewContext) -> impl Element { let theme = cx.global::().theme.clone(); let pane = cx.handle().downgrade(); @@ -1445,9 +1445,9 @@ impl Pane { tooltip_theme, cx, ) - .into_element() + .into_any() } else { - mouse_event_handler.into_element() + mouse_event_handler.into_any() } } }); @@ -1495,7 +1495,7 @@ impl Pane { .with_border(filler_style.container.border) }) .flex(1., true) - .into_named_element("filler"), + .into_any_named("filler"), ); row @@ -1546,7 +1546,7 @@ impl Pane { hovered: bool, tab_style: &theme::Tab, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let title = item.tab_content(detail, &tab_style, cx); Self::render_tab_with_title(title, item, pane, first, hovered, tab_style, cx) } @@ -1559,20 +1559,20 @@ impl Pane { hovered: bool, tab_style: &theme::Tab, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let title = item.dragged_tab_content(detail, &tab_style, cx); Self::render_tab_with_title(title, item, pane, first, hovered, tab_style, cx) } fn render_tab_with_title( - title: Element, + title: AnyElement, item: &Box, pane: WeakViewHandle, first: bool, hovered: bool, tab_style: &theme::Tab, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let mut container = tab_style.container.clone(); if first { container.border.left = false; @@ -1636,7 +1636,7 @@ impl Pane { }) } }) - .into_named_element("close-tab-icon") + .into_any_named("close-tab-icon") .constrained() } else { Empty::new().constrained() @@ -1648,14 +1648,14 @@ impl Pane { .with_style(container) .constrained() .with_height(tab_style.height) - .into_element() + .into_any() } fn render_tab_bar_buttons( &mut self, theme: &Theme, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { Flex::row() // New menu .with_child(render_tab_bar_button( @@ -1701,15 +1701,19 @@ impl Pane { .contained() .with_style(theme.workspace.tab_bar.pane_button_container) .flex(1., false) - .into_element() + .into_any() } - fn render_blank_pane(&mut self, theme: &Theme, _cx: &mut ViewContext) -> Element { + fn render_blank_pane( + &mut self, + theme: &Theme, + _cx: &mut ViewContext, + ) -> AnyElement { let background = theme.workspace.background; Empty::new() .contained() .with_background_color(background) - .into_element() + .into_any() } } @@ -1722,7 +1726,7 @@ impl View for Pane { "Pane" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { enum MouseNavigationHandler {} MouseEventHandler::::new(0, cx, |_, cx| { @@ -1750,11 +1754,8 @@ impl View for Pane { ), ); - let mut tab_row = Flex::row().with_child( - self.render_tabs(cx) - .flex(1., true) - .into_named_element("tabs"), - ); + let mut tab_row = Flex::row() + .with_child(self.render_tabs(cx).flex(1., true).into_any_named("tabs")); if self.is_active { tab_row.add_child(self.render_tab_bar_buttons(&theme, cx)) @@ -1765,7 +1766,7 @@ impl View for Pane { .constrained() .with_height(theme.workspace.tab_bar.height) .flex(1., false) - .into_named_element("tab bar") + .into_any_named("tab bar") }) .with_child({ enum PaneContentTabDropTarget {} @@ -1797,7 +1798,7 @@ impl View for Pane { .flex(1., true) }) .with_child(ChildView::new(&self.tab_context_menu, cx)) - .into_element() + .into_any() } else { enum EmptyPane {} let theme = cx.global::().theme.clone(); @@ -1808,7 +1809,7 @@ impl View for Pane { .on_down(MouseButton::Left, |_, _, cx| { cx.focus_parent_view(); }) - .into_element() + .into_any() } }) .on_down( @@ -1824,7 +1825,7 @@ impl View for Pane { cx.dispatch_action(GoForward { pane: Some(pane) }) } }) - .into_named_element("pane") + .into_any_named("pane") } fn focus_in(&mut self, focused: AnyViewHandle, cx: &mut ViewContext) { @@ -1876,7 +1877,7 @@ fn render_tab_bar_button( cx: &mut ViewContext, action: A, context_menu: Option>, -) -> Element { +) -> AnyElement { enum TabBarButton {} Stack::new() @@ -1902,7 +1903,7 @@ fn render_tab_bar_button( context_menu.map(|menu| ChildView::new(&menu, cx).aligned().bottom().right()), ) .flex(1., false) - .into_named_element("tab bar button") + .into_any_named("tab bar button") } impl ItemNavHistory { @@ -2008,11 +2009,11 @@ impl NavHistory { pub struct PaneBackdrop { child_view: usize, - child: Element, + child: AnyElement, } impl PaneBackdrop { - pub fn new(pane_item_view: usize, child: Element) -> Self { + pub fn new(pane_item_view: usize, child: AnyElement) -> Self { PaneBackdrop { child, child_view: pane_item_view, @@ -2020,7 +2021,7 @@ impl PaneBackdrop { } } -impl Drawable for PaneBackdrop { +impl Element for PaneBackdrop { type LayoutState = (); type PaintState = (); diff --git a/crates/workspace/src/pane/dragged_item_receiver.rs b/crates/workspace/src/pane/dragged_item_receiver.rs index 8b206993313021ac68aa9a3d3ee2b298363ceee5..ae6b250fb625117bf4645bb3dcec16f814b4fd14 100644 --- a/crates/workspace/src/pane/dragged_item_receiver.rs +++ b/crates/workspace/src/pane/dragged_item_receiver.rs @@ -5,7 +5,7 @@ use gpui::{ geometry::{rect::RectF, vector::Vector2F}, platform::MouseButton, scene::MouseUp, - AppContext, Drawable, EventContext, MouseState, Quad, View, ViewContext, WeakViewHandle, + AppContext, Element, EventContext, MouseState, Quad, View, ViewContext, WeakViewHandle, }; use project::ProjectEntryId; use settings::Settings; @@ -27,7 +27,7 @@ pub fn dragged_item_receiver( ) -> MouseEventHandler where Tag: 'static, - D: Drawable, + D: Element, F: FnOnce(&mut MouseState, &mut ViewContext) -> D, { MouseEventHandler::::above(region_id, cx, |state, cx| { diff --git a/crates/workspace/src/pane_group.rs b/crates/workspace/src/pane_group.rs index 24d2ea78b5839ac2fe04a3a4e2794bc3dccde307..49dd8db6060b69e20d4ecc33cd22bba3eccf7c68 100644 --- a/crates/workspace/src/pane_group.rs +++ b/crates/workspace/src/pane_group.rs @@ -71,7 +71,7 @@ impl PaneGroup { active_call: Option<&ModelHandle>, active_pane: &ViewHandle, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { self.root.render( project, theme, @@ -132,7 +132,7 @@ impl Member { active_call: Option<&ModelHandle>, active_pane: &ViewHandle, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { enum FollowIntoExternalProject {} match self { @@ -207,7 +207,7 @@ impl Member { .aligned() .bottom() .right() - .into_element(), + .into_any(), ) } } @@ -224,7 +224,7 @@ impl Member { .aligned() .bottom() .right() - .into_element(), + .into_any(), ), ParticipantLocation::External => Some( Label::new( @@ -239,7 +239,7 @@ impl Member { .aligned() .bottom() .right() - .into_element(), + .into_any(), ), } } else { @@ -249,7 +249,7 @@ impl Member { Stack::new() .with_child(ChildView::new(pane, cx).contained().with_border(border)) .with_children(leader_status_box) - .into_element() + .into_any() } Member::Axis(axis) => axis.render( project, @@ -361,7 +361,7 @@ impl PaneAxis { active_call: Option<&ModelHandle>, active_pane: &ViewHandle, cx: &mut ViewContext, - ) -> Element { + ) -> AnyElement { let last_member_ix = self.members.len() - 1; Flex::new(self.axis) .with_children(self.members.iter().enumerate().map(|(ix, member)| { @@ -382,12 +382,12 @@ impl PaneAxis { Axis::Vertical => border.bottom = true, Axis::Horizontal => border.right = true, } - member = member.contained().with_border(border).into_element(); + member = member.contained().with_border(border).into_any(); } FlexItem::new(member).flex(flex, true) })) - .into_element() + .into_any() } } diff --git a/crates/workspace/src/shared_screen.rs b/crates/workspace/src/shared_screen.rs index b9304b87c93a7bec7aa9f9ef052df397980ca32a..47c802d938e4a86f562f54bca782309334d7be50 100644 --- a/crates/workspace/src/shared_screen.rs +++ b/crates/workspace/src/shared_screen.rs @@ -69,7 +69,7 @@ impl View for SharedScreen { "SharedScreen" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { enum Focus {} let frame = self.frame.clone(); @@ -91,7 +91,7 @@ impl View for SharedScreen { .with_style(cx.global::().theme.shared_screen) }) .on_down(MouseButton::Left, |_, _, cx| cx.focus_parent_view()) - .into_element() + .into_any() } } @@ -110,7 +110,7 @@ impl Item for SharedScreen { _: Option, style: &theme::Tab, _: &AppContext, - ) -> gpui::Element { + ) -> gpui::AnyElement { Flex::row() .with_child( Svg::new("icons/disable_screen_sharing_12.svg") @@ -128,7 +128,7 @@ impl Item for SharedScreen { ) .aligned(), ) - .into_element() + .into_any() } fn set_nav_history(&mut self, history: ItemNavHistory, _: &mut ViewContext) { diff --git a/crates/workspace/src/sidebar.rs b/crates/workspace/src/sidebar.rs index 3d17278c9c098ff30f7ce604e87d8ec120d790d2..2581c87f4211bd7dbc867cb3e1a4e9336c8b29c1 100644 --- a/crates/workspace/src/sidebar.rs +++ b/crates/workspace/src/sidebar.rs @@ -188,7 +188,7 @@ impl View for Sidebar { "Sidebar" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { if let Some(active_item) = self.active_item() { enum ResizeHandleTag {} let style = &cx.global::().theme.workspace.sidebar; @@ -202,9 +202,9 @@ impl View for Sidebar { style.initial_size, cx, ) - .into_element() + .into_any() } else { - Empty::new().into_element() + Empty::new().into_any() } } } @@ -225,7 +225,7 @@ impl View for SidebarButtons { "SidebarToggleButton" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let theme = &cx.global::().theme; let tooltip_style = theme.tooltip.clone(); let theme = &theme.workspace.status_bar.sidebar_buttons; @@ -294,7 +294,7 @@ impl View for SidebarButtons { )) .contained() .with_style(group_style) - .into_element() + .into_any() } } diff --git a/crates/workspace/src/status_bar.rs b/crates/workspace/src/status_bar.rs index 290ba69e4ca810d36da898fc76a8f31f8df5bffd..60bc1f81f5a7470af06380c00be595c8bacfec57 100644 --- a/crates/workspace/src/status_bar.rs +++ b/crates/workspace/src/status_bar.rs @@ -8,8 +8,8 @@ use gpui::{ vector::{vec2f, Vector2F}, }, json::{json, ToJson}, - AnyViewHandle, Element, Entity, SceneBuilder, SizeConstraint, Subscription, View, ViewContext, - ViewHandle, WindowContext, + AnyElement, AnyViewHandle, Entity, SceneBuilder, SizeConstraint, Subscription, View, + ViewContext, ViewHandle, WindowContext, }; use settings::Settings; @@ -46,7 +46,7 @@ impl View for StatusBar { "StatusBar" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let theme = &cx.global::().theme.workspace.status_bar; StatusBarElement { @@ -57,7 +57,7 @@ impl View for StatusBar { .contained() .with_margin_right(theme.item_spacing) })) - .into_element(), + .into_any(), right: Flex::row() .with_children(self.right_items.iter().rev().map(|i| { @@ -66,13 +66,13 @@ impl View for StatusBar { .contained() .with_margin_left(theme.item_spacing) })) - .into_element(), + .into_any(), } .contained() .with_style(theme.container) .constrained() .with_height(theme.height) - .into_element() + .into_any() } } @@ -145,11 +145,11 @@ impl From<&dyn StatusItemViewHandle> for AnyViewHandle { } struct StatusBarElement { - left: Element, - right: Element, + left: AnyElement, + right: AnyElement, } -impl Drawable for StatusBarElement { +impl Element for StatusBarElement { type LayoutState = (); type PaintState = (); diff --git a/crates/workspace/src/toolbar.rs b/crates/workspace/src/toolbar.rs index d4b4d6fb2f681e378f7f6d0666190a1a0c5843b9..e9cc90f64d164e09834e409ad85f85d44128b7a2 100644 --- a/crates/workspace/src/toolbar.rs +++ b/crates/workspace/src/toolbar.rs @@ -1,7 +1,7 @@ use crate::{ItemHandle, Pane}; use gpui::{ - elements::*, platform::CursorStyle, platform::MouseButton, Action, AnyViewHandle, AppContext, - Element, Entity, View, ViewContext, ViewHandle, WeakViewHandle, WindowContext, + elements::*, platform::CursorStyle, platform::MouseButton, Action, AnyElement, AnyViewHandle, + AppContext, Entity, View, ViewContext, ViewHandle, WeakViewHandle, WindowContext, }; use settings::Settings; @@ -59,7 +59,7 @@ impl View for Toolbar { "Toolbar" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let theme = &cx.global::().theme.workspace.toolbar; let mut primary_left_items = Vec::new(); @@ -77,9 +77,9 @@ impl View for Toolbar { .contained() .with_margin_right(spacing); if let Some((flex, expanded)) = flex { - primary_left_items.push(left_item.flex(flex, expanded).into_element()); + primary_left_items.push(left_item.flex(flex, expanded).into_any()); } else { - primary_left_items.push(left_item.into_element()); + primary_left_items.push(left_item.into_any()); } } @@ -90,9 +90,9 @@ impl View for Toolbar { .with_margin_left(spacing) .flex_float(); if let Some((flex, expanded)) = flex { - primary_right_items.push(right_item.flex(flex, expanded).into_element()); + primary_right_items.push(right_item.flex(flex, expanded).into_any()); } else { - primary_right_items.push(right_item.into_element()); + primary_right_items.push(right_item.into_any()); } } @@ -101,7 +101,7 @@ impl View for Toolbar { ChildView::new(item.as_any(), cx) .constrained() .with_height(theme.height) - .into_element(), + .into_any(), ); } } @@ -156,7 +156,7 @@ impl View for Toolbar { .with_children(secondary_item) .contained() .with_style(container_style) - .into_named_element("toolbar") + .into_any_named("toolbar") } } @@ -171,7 +171,7 @@ fn nav_button( tooltip_action: A, action_name: &str, cx: &mut ViewContext, -) -> Element { +) -> AnyElement { MouseEventHandler::::new(0, cx, |state, _| { let style = if enabled { style.style_for(state, false) @@ -207,7 +207,7 @@ fn nav_button( ) .contained() .with_margin_right(spacing) - .into_named_element("nav button") + .into_any_named("nav button") } impl Toolbar { diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index 77eabb8d64784a696b461c06248092adcf7bd8a7..68f855539350022e1964f58eb8b7063ee3337756 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -2075,7 +2075,7 @@ impl Workspace { self.leader_state.followers.contains(&peer_id) } - fn render_titlebar(&self, theme: &Theme, cx: &mut ViewContext) -> Element { + fn render_titlebar(&self, theme: &Theme, cx: &mut ViewContext) -> AnyElement { // TODO: There should be a better system in place for this // (https://github.com/zed-industries/zed/issues/1290) let is_fullscreen = cx.window_is_fullscreen(); @@ -2105,7 +2105,7 @@ impl Workspace { }) .constrained() .with_height(theme.workspace.titlebar.height) - .into_named_element("titlebar") + .into_any_named("titlebar") } fn active_item_path_changed(&mut self, cx: &mut ViewContext) { @@ -2173,7 +2173,7 @@ impl Workspace { fn render_disconnected_overlay( &self, cx: &mut ViewContext, - ) -> Option> { + ) -> Option> { if self.project.read(cx).is_read_only() { enum DisconnectedOverlay {} Some( @@ -2189,7 +2189,7 @@ impl Workspace { }) .with_cursor_style(CursorStyle::Arrow) .capture_all() - .into_named_element("disconnected overlay"), + .into_any_named("disconnected overlay"), ) } else { None @@ -2200,7 +2200,7 @@ impl Workspace { &self, theme: &theme::Workspace, cx: &AppContext, - ) -> Option> { + ) -> Option> { if self.notifications.is_empty() { None } else { @@ -2218,7 +2218,7 @@ impl Workspace { .aligned() .bottom() .right() - .into_element(), + .into_any(), ) } } @@ -2826,7 +2826,7 @@ impl View for Workspace { "Workspace" } - fn render(&mut self, cx: &mut ViewContext) -> Element { + fn render(&mut self, cx: &mut ViewContext) -> AnyElement { let theme = cx.global::().theme.clone(); Stack::new() .with_child( @@ -2923,7 +2923,7 @@ impl View for Workspace { ) .with_children(DragAndDrop::render(cx)) .with_children(self.render_disconnected_overlay(cx)) - .into_named_element("workspace") + .into_any_named("workspace") } fn focus_in(&mut self, view: AnyViewHandle, cx: &mut ViewContext) {