diff --git a/crates/activity_indicator/src/activity_indicator.rs b/crates/activity_indicator/src/activity_indicator.rs index 11a8945d61..4b58b3ad0a 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 173406f645..c0b88fdf5e 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 8f03914c3d..c09706f378 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 577415ffea..7a9c2cd97e 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 5cd935b9f5..6820644441 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 5545770560..b07d6d7e2b 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 8f32abcc74..8cbba6030d 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 82f90041be..9ad8a22485 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 15ceb26fbe..cbef4bfa88 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 c426e44804..839ea7c735 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 e0799626d8..49c9adb845 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 c3facc8b39..66afea34c1 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 3600de2b14..4cdb18d97c 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 df67286a8c..42c3c886ad 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 c7e3acd6a8..07c6de8663 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 7db1500208..cba3073caa 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 1ad407912e..d7aadb6262 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 a838766233..da13ce4413 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 f637880d52..53ac43be2e 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 6febb447e6..19b1506509 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 8eb0fab15b..fdf122593e 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 01df7bb2bd..e190ec7717 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 9fe78c1081..4f2732baf7 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 c2c1b23dc1..54ba2c1a9c 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 e6d0b5e3f2..3ef29f81a1 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 c44d6808dc..1179109903 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 b1e6f26000..7c62f71bda 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 cd3a41a515..a1316b8179 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 e3256b5cbe..9536477c74 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 0466402ad9..e5a406bc73 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 1d86435351..b557c4f7e1 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 642befebb7..918c74bed8 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 1b1eb3090f..f00430feb7 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 76fe0f94c8..90287e9270 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 4450c3e4d5..10aa61fde5 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 db3fa42491..175d11e4a4 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 306e83652a..82a5f13cf2 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 6247722d98..09b9c40589 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 efe4a705fb..b3724c923f 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 78b3b61c19..36ff4e2cf4 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 721d45b489..85466972d3 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 efea1df127..fc033c9b43 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 bd85b5779d..1cbef9a52e 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 b07364e289..d1a3cbafdb 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 0004b3ac3d..8a59191b7a 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 2357fe1553..7fee0006f7 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 577bdb904a..cb22760285 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 480cc8bdd3..162446c1f0 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 c5b6b58fe9..b179d78127 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 f59be7e191..2669f4d5f2 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 f9b51c956e..84043f5e1f 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 22863de610..8abcf5f835 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 71057f50a7..0abd1231e2 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 aaf35cd507..37e15541f4 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 46c1d5475c..188f7012d4 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 792a958808..0f75be82fd 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 38e387209e..3090a81c72 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 4b29886dc2..4cd924a48c 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 38bf5cb12e..e75425dc3f 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 3708f7e9fe..a172667fb9 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 8200400acd..3b2a5e9960 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 c6c7f5d7a8..285f37639e 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 fe05ed85a2..17e53b378c 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 1f349108ba..27ddd63e75 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 ae044678a5..5cbbbf1302 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 9b2da2435f..7274962a5b 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 b540b7f3bf..c144ba569e 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 32c04a43bf..c730c4d38a 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 7decf0830d..6d056d100a 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 4a441ab8e6..70acfcd5d5 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 c6baa613fd..629a58387c 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 d358c96c8a..18a3171209 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 80078e8165..c261879a58 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 7a84665649..e1c8edc0c7 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 8ddd248be9..b34c78b58b 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 2a4a4c3432..b7ca3c01c7 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 74046c94b1..4e705b12b8 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 946e3ddbb7..ee7066b80f 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 1127f89709..c18a580d07 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 b8ba7de528..1db340bde9 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 e9eb66ee7d..d75bbea56e 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 19cc00654d..e4cd7ed14d 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 bea1072211..babd08298a 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 d1a2b8c2fe..52c8a60908 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 6d941e0f60..05f8e98acd 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 b0b8539ea6..b7688fa907 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 8b20699331..ae6b250fb6 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 24d2ea78b5..49dd8db606 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 b9304b87c9..47c802d938 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 3d17278c9c..2581c87f42 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 290ba69e4c..60bc1f81f5 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 d4b4d6fb2f..e9cc90f64d 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 77eabb8d64..68f8555393 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) {