From adb2e95e2aa13cf4ba4e7b210685a24bf969f2e4 Mon Sep 17 00:00:00 2001 From: Nate Butler Date: Mon, 7 Jul 2025 12:15:42 -0400 Subject: [PATCH] Update focus outline styles --- crates/ui/src/components.rs | 4 ++-- .../components/{ring.rs => focus_outline.rs} | 21 +++++++++---------- 2 files changed, 12 insertions(+), 13 deletions(-) rename crates/ui/src/components/{ring.rs => focus_outline.rs} (75%) diff --git a/crates/ui/src/components.rs b/crates/ui/src/components.rs index 6d9599c4916c4eba235472482dca7f973d0f8515..d21bc16b4cea9ec7eb91583ab3c70229abd889a6 100644 --- a/crates/ui/src/components.rs +++ b/crates/ui/src/components.rs @@ -8,6 +8,7 @@ mod disclosure; mod divider; mod dropdown_menu; mod facepile; +mod focus_outline; mod group; mod icon; mod image; @@ -27,7 +28,6 @@ mod popover_menu; mod progress; mod radio; mod right_click_menu; -mod ring; mod scrollbar; mod settings_container; mod settings_group; @@ -51,6 +51,7 @@ pub use disclosure::*; pub use divider::*; pub use dropdown_menu::*; pub use facepile::*; +pub use focus_outline::*; pub use group::*; pub use icon::*; pub use image::*; @@ -70,7 +71,6 @@ pub use popover_menu::*; pub use progress::*; pub use radio::*; pub use right_click_menu::*; -pub use ring::*; pub use scrollbar::*; pub use settings_container::*; pub use settings_group::*; diff --git a/crates/ui/src/components/ring.rs b/crates/ui/src/components/focus_outline.rs similarity index 75% rename from crates/ui/src/components/ring.rs rename to crates/ui/src/components/focus_outline.rs index 22081d03df21aa7c5037ae2703bcc28b27ed86fa..042ba588cd5d686446c10754bfd14d7fa6d81e0c 100644 --- a/crates/ui/src/components/ring.rs +++ b/crates/ui/src/components/focus_outline.rs @@ -6,10 +6,10 @@ use theme::ActiveTheme; use crate::{h_flex, utils::CornerSolver}; -/// A ring is a stylistic focus indicator that draws a ring around +/// An outline is a stylistic focus indicator that draws a ring around /// an element with some space between the element and ring. #[derive(IntoElement)] -pub struct Ring { +pub struct FocusOutline { corner_radius: Pixels, border_width: Pixels, padding: Pixels, @@ -18,16 +18,15 @@ pub struct Ring { children: SmallVec<[AnyElement; 2]>, } -impl Ring { - pub fn new(child_corner_radius: Pixels, focused: bool) -> Self { - let border_width = px(1.); - let padding = px(2.); +impl FocusOutline { + pub fn new(child_corner_radius: Pixels, focused: bool, offset: Pixels) -> Self { + let ring_width = px(1.); let corner_radius = - CornerSolver::parent_radius(child_corner_radius, border_width, padding, px(0.)); + CornerSolver::parent_radius(child_corner_radius, ring_width, offset, px(0.)); Self { corner_radius, - border_width, - padding, + border_width: ring_width, + padding: offset, focused, active: false, children: SmallVec::new(), @@ -40,7 +39,7 @@ impl Ring { } } -impl RenderOnce for Ring { +impl RenderOnce for FocusOutline { fn render(self, _window: &mut gpui::Window, cx: &mut gpui::App) -> impl IntoElement { let border_color = if self.focused && self.active { cx.theme().colors().border_focused.opacity(0.48) @@ -59,7 +58,7 @@ impl RenderOnce for Ring { } } -impl ParentElement for Ring { +impl ParentElement for FocusOutline { fn extend(&mut self, elements: impl IntoIterator) { self.children.extend(elements) }