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 57c84b62b5b82beb012e094c556cc5c990fdc64d..d6642f7debb20702763ca226f68d8a7c619cf12e 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 e573b11d6e6b98275dead65a699aa3ccaade390f..e4c8ead043f54b1820896534e150ffd716022533 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 f161521f57d559ef63e2d54008972734528de995..ed68e3e40dda5985364d5895adfd178647576dfe 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 f98a9620948352946fd171f54fc596ee46198172..ccf29f45ff917568d2ebe3ce1af6a9a86ebda734 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 41ad33e588ef18a1afa2a122c491fe82d0d6969e..00609aef2debee01e3478aabf5c888b6221d2db9 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 c5e2f1701e5ac555696fde4dc2a808462217456a..3f84f14086501b51cc6ed1882e2fb23ca752d4a6 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 586331afbd8a4fe0c4a9717e51142605a0447d31..0d4cade684b7d6d436251c091a6a3182ff0246ab 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 34925bd0753568ae266a9d3c648a8adffaf744a8..159b9c065e8d560753d19a6fe2e364daa1586cc7 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 d5abd9add44475731f375063e39ea91321f04ea8..03ba16cd3e42e8432cf2f400d0b278b9a1b5a1cd 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 f6e859ce44d1fd1553f67e44e99ed5e3926799a5..fb96f75a80e6b549cd6207e1b2d343cf0ce90d47 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 f7063d17c3e99a8b912551b23223e6f5826025b8..17236c07c6a108fb0da7db9e213bed7d7a453b20 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 9d362ed6bde1b07d5edec1bb07919a95629b6197..28a7031fc3b8bbb0c39bb53e328f4a5880ba58b1 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 ba457bd7a0b11e7e8bb9e14b164e5a753ee7362d..be32df471d39e4d1674a7eb65de63c84ff1c2ef2 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 05bceda2d0724a6846223918544960e52a0a48d1..3fb5f7834cdbef67c7be9906516674280eafe3c9 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 367841286ff9730bcd31430fad3d9da1eccd35e0..25481252b3d00727a8e1143ab6d5bcd1fef0d075 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 a8fbf92257bd90edb3cad68f511646e45d4e3cbf..439507e56e25d3d8f0eaac77140094dd8627fc3c 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(