From bd6d385817893c2ee8d0063a629a61c3cbebdfae Mon Sep 17 00:00:00 2001 From: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Date: Thu, 9 May 2024 11:38:53 +0200 Subject: [PATCH] gpui: Pass Style by value to request_layout (#11597) A minor thing I've spotted and decided to fix on the spot. It was being cloned twice within the body of that function (one of which was redundant even without this PR); now in most cases we go down from 2 clones to 0. Release Notes: - N/A --- crates/editor/src/element.rs | 4 ++-- crates/gpui/src/element.rs | 2 +- crates/gpui/src/elements/anchored.rs | 2 +- crates/gpui/src/elements/canvas.rs | 2 +- crates/gpui/src/elements/div.rs | 2 +- crates/gpui/src/elements/img.rs | 2 +- crates/gpui/src/elements/list.rs | 2 +- crates/gpui/src/elements/svg.rs | 2 +- crates/gpui/src/taffy.rs | 12 +++++------- crates/gpui/src/view.rs | 2 +- crates/gpui/src/window.rs | 2 +- crates/markdown/src/markdown.rs | 2 +- crates/terminal_view/src/terminal_element.rs | 2 +- crates/ui/src/components/popover_menu.rs | 2 +- crates/ui/src/components/right_click_menu.rs | 2 +- crates/workspace/src/pane_group.rs | 2 +- 16 files changed, 21 insertions(+), 23 deletions(-) diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index 57c84b62b5..d6642f7deb 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -3661,7 +3661,7 @@ impl Element for EditorElement { let mut style = Style::default(); style.size.width = relative(1.).into(); style.size.height = self.style.text.line_height_in_pixels(rem_size).into(); - cx.request_layout(&style, None) + cx.request_layout(style, None) } EditorMode::AutoHeight { max_lines } => { let editor_handle = cx.view().clone(); @@ -3685,7 +3685,7 @@ impl Element for EditorElement { let mut style = Style::default(); style.size.width = relative(1.).into(); style.size.height = relative(1.).into(); - cx.request_layout(&style, None) + cx.request_layout(style, None) } }; diff --git a/crates/gpui/src/element.rs b/crates/gpui/src/element.rs index e573b11d6e..e4c8ead043 100644 --- a/crates/gpui/src/element.rs +++ b/crates/gpui/src/element.rs @@ -603,7 +603,7 @@ impl Element for Empty { _id: Option<&GlobalElementId>, cx: &mut WindowContext, ) -> (LayoutId, Self::RequestLayoutState) { - (cx.request_layout(&Style::default(), None), ()) + (cx.request_layout(Style::default(), None), ()) } fn prepaint( diff --git a/crates/gpui/src/elements/anchored.rs b/crates/gpui/src/elements/anchored.rs index f161521f57..ed68e3e40d 100644 --- a/crates/gpui/src/elements/anchored.rs +++ b/crates/gpui/src/elements/anchored.rs @@ -93,7 +93,7 @@ impl Element for Anchored { ..Style::default() }; - let layout_id = cx.request_layout(&anchored_style, child_layout_ids.iter().copied()); + let layout_id = cx.request_layout(anchored_style, child_layout_ids.iter().copied()); (layout_id, AnchoredState { child_layout_ids }) } diff --git a/crates/gpui/src/elements/canvas.rs b/crates/gpui/src/elements/canvas.rs index f98a962094..ccf29f45ff 100644 --- a/crates/gpui/src/elements/canvas.rs +++ b/crates/gpui/src/elements/canvas.rs @@ -49,7 +49,7 @@ impl Element for Canvas { ) -> (crate::LayoutId, Self::RequestLayoutState) { let mut style = Style::default(); style.refine(&self.style); - let layout_id = cx.request_layout(&style, []); + let layout_id = cx.request_layout(style.clone(), []); (layout_id, style) } diff --git a/crates/gpui/src/elements/div.rs b/crates/gpui/src/elements/div.rs index 41ad33e588..00609aef2d 100644 --- a/crates/gpui/src/elements/div.rs +++ b/crates/gpui/src/elements/div.rs @@ -1139,7 +1139,7 @@ impl Element for Div { .iter_mut() .map(|child| child.request_layout(cx)) .collect::>(); - cx.request_layout(&style, child_layout_ids.iter().copied()) + cx.request_layout(style, child_layout_ids.iter().copied()) }) }); (layout_id, DivFrameState { child_layout_ids }) diff --git a/crates/gpui/src/elements/img.rs b/crates/gpui/src/elements/img.rs index c5e2f1701e..3f84f14086 100644 --- a/crates/gpui/src/elements/img.rs +++ b/crates/gpui/src/elements/img.rs @@ -262,7 +262,7 @@ impl Element for Img { } } - cx.request_layout(&style, []) + cx.request_layout(style, []) }); (layout_id, ()) } diff --git a/crates/gpui/src/elements/list.rs b/crates/gpui/src/elements/list.rs index 586331afbd..0d4cade684 100644 --- a/crates/gpui/src/elements/list.rs +++ b/crates/gpui/src/elements/list.rs @@ -766,7 +766,7 @@ impl Element for List { let mut style = Style::default(); style.refine(&self.style); cx.with_text_style(style.text_style().cloned(), |cx| { - cx.request_layout(&style, None) + cx.request_layout(style, None) }) } }; diff --git a/crates/gpui/src/elements/svg.rs b/crates/gpui/src/elements/svg.rs index 34925bd075..159b9c065e 100644 --- a/crates/gpui/src/elements/svg.rs +++ b/crates/gpui/src/elements/svg.rs @@ -51,7 +51,7 @@ impl Element for Svg { ) -> (LayoutId, Self::RequestLayoutState) { let layout_id = self .interactivity - .request_layout(global_id, cx, |style, cx| cx.request_layout(&style, None)); + .request_layout(global_id, cx, |style, cx| cx.request_layout(style, None)); (layout_id, ()) } diff --git a/crates/gpui/src/taffy.rs b/crates/gpui/src/taffy.rs index d5abd9add4..03ba16cd3e 100644 --- a/crates/gpui/src/taffy.rs +++ b/crates/gpui/src/taffy.rs @@ -49,7 +49,7 @@ impl TaffyLayoutEngine { pub fn request_layout( &mut self, - style: &Style, + style: Style, rem_size: Pixels, children: &[LayoutId], ) -> LayoutId { @@ -66,12 +66,11 @@ impl TaffyLayoutEngine { .new_with_children(taffy_style, unsafe { std::mem::transmute(children) }) .expect(EXPECT_MESSAGE) .into(); - for child_id in children { - self.children_to_parents.insert(*child_id, parent_id); - } + self.children_to_parents + .extend(children.into_iter().map(|child_id| (*child_id, parent_id))); parent_id }; - self.styles.insert(layout_id, style.clone()); + self.styles.insert(layout_id, style); layout_id } @@ -82,7 +81,6 @@ impl TaffyLayoutEngine { measure: impl FnMut(Size>, Size, &mut WindowContext) -> Size + 'static, ) -> LayoutId { - let style = style.clone(); let taffy_style = style.to_taffy(rem_size); let layout_id = self @@ -91,7 +89,7 @@ impl TaffyLayoutEngine { .expect(EXPECT_MESSAGE) .into(); self.nodes_to_measure.insert(layout_id, Box::new(measure)); - self.styles.insert(layout_id, style.clone()); + self.styles.insert(layout_id, style); layout_id } diff --git a/crates/gpui/src/view.rs b/crates/gpui/src/view.rs index f6e859ce44..fb96f75a80 100644 --- a/crates/gpui/src/view.rs +++ b/crates/gpui/src/view.rs @@ -296,7 +296,7 @@ impl Element for AnyView { if let Some(style) = self.cached_style.as_ref() { let mut root_style = Style::default(); root_style.refine(style); - let layout_id = cx.request_layout(&root_style, None); + let layout_id = cx.request_layout(root_style, None); (layout_id, None) } else { let mut element = (self.render)(self, cx); diff --git a/crates/gpui/src/window.rs b/crates/gpui/src/window.rs index f7063d17c3..17236c07c6 100644 --- a/crates/gpui/src/window.rs +++ b/crates/gpui/src/window.rs @@ -2503,7 +2503,7 @@ impl<'a> WindowContext<'a> { /// This method should only be called as part of the request_layout or prepaint phase of element drawing. pub fn request_layout( &mut self, - style: &Style, + style: Style, children: impl IntoIterator, ) -> LayoutId { debug_assert_eq!( diff --git a/crates/markdown/src/markdown.rs b/crates/markdown/src/markdown.rs index 9d362ed6bd..28a7031fc3 100644 --- a/crates/markdown/src/markdown.rs +++ b/crates/markdown/src/markdown.rs @@ -568,7 +568,7 @@ impl Element for MarkdownElement { let mut rendered_markdown = builder.build(); let child_layout_id = rendered_markdown.element.request_layout(cx); - let layout_id = cx.request_layout(&Style::default(), [child_layout_id]); + let layout_id = cx.request_layout(Style::default(), [child_layout_id]); (layout_id, rendered_markdown) } diff --git a/crates/terminal_view/src/terminal_element.rs b/crates/terminal_view/src/terminal_element.rs index ba457bd7a0..be32df471d 100644 --- a/crates/terminal_view/src/terminal_element.rs +++ b/crates/terminal_view/src/terminal_element.rs @@ -559,7 +559,7 @@ impl Element for TerminalElement { .request_layout(global_id, cx, |mut style, cx| { style.size.width = relative(1.).into(); style.size.height = relative(1.).into(); - let layout_id = cx.request_layout(&style, None); + let layout_id = cx.request_layout(style, None); layout_id }); diff --git a/crates/ui/src/components/popover_menu.rs b/crates/ui/src/components/popover_menu.rs index 05bceda2d0..3fb5f7834c 100644 --- a/crates/ui/src/components/popover_menu.rs +++ b/crates/ui/src/components/popover_menu.rs @@ -195,7 +195,7 @@ impl Element for PopoverMenu { .map(|child_element| child_element.request_layout(cx)); let layout_id = cx.request_layout( - &gpui::Style::default(), + gpui::Style::default(), menu_layout_id.into_iter().chain(child_layout_id), ); diff --git a/crates/ui/src/components/right_click_menu.rs b/crates/ui/src/components/right_click_menu.rs index 367841286f..25481252b3 100644 --- a/crates/ui/src/components/right_click_menu.rs +++ b/crates/ui/src/components/right_click_menu.rs @@ -142,7 +142,7 @@ impl Element for RightClickMenu { .map(|child_element| child_element.request_layout(cx)); let layout_id = cx.request_layout( - &gpui::Style::default(), + gpui::Style::default(), menu_layout_id.into_iter().chain(child_layout_id), ); diff --git a/crates/workspace/src/pane_group.rs b/crates/workspace/src/pane_group.rs index a8fbf92257..439507e56e 100644 --- a/crates/workspace/src/pane_group.rs +++ b/crates/workspace/src/pane_group.rs @@ -810,7 +810,7 @@ mod element { style.flex_basis = relative(0.).into(); style.size.width = relative(1.).into(); style.size.height = relative(1.).into(); - (cx.request_layout(&style, None), ()) + (cx.request_layout(style, None), ()) } fn prepaint(