Remove the Stack trait, update StyledExt to include stacks

Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
This commit is contained in:
Nate Butler 2023-11-08 15:00:47 -05:00
parent cb830a4ce0
commit f4abd95866
2 changed files with 39 additions and 26 deletions

View file

@ -1,31 +1,17 @@
use gpui::{div, Div}; use gpui::{div, Div};
use crate::prelude::*; use crate::StyledExt;
pub trait Stack: Styled + Sized {
/// Horizontally stacks elements.
fn h_stack(self) -> Self {
self.flex().flex_row().items_center()
}
/// Vertically stacks elements.
fn v_stack(self) -> Self {
self.flex().flex_col()
}
}
impl<V: 'static> Stack for Div<V> {}
/// Horizontally stacks elements. /// Horizontally stacks elements.
/// ///
/// Sets `flex()`, `flex_row()`, `items_center()` /// Sets `flex()`, `flex_row()`, `items_center()`
pub fn h_stack<V: 'static>() -> Div<V> { pub fn h_stack<V: 'static>() -> Div<V> {
div().h_stack() div().h_flex()
} }
/// Vertically stacks elements. /// Vertically stacks elements.
/// ///
/// Sets `flex()`, `flex_col()` /// Sets `flex()`, `flex_col()`
pub fn v_stack<V: 'static>() -> Div<V> { pub fn v_stack<V: 'static>() -> Div<V> {
div().v_stack() div().v_flex()
} }

View file

@ -3,18 +3,36 @@ use gpui::{Div, Styled};
use crate::UITextSize; use crate::UITextSize;
/// Extends [`Styled`](gpui::Styled) with Zed specific styling methods. /// Extends [`Styled`](gpui::Styled) with Zed specific styling methods.
pub trait StyledExt { pub trait StyledExt: Styled {
fn text_ui_size(self, size: UITextSize) -> Self; /// Horizontally stacks elements.
fn text_ui(self) -> Self; ///
fn text_ui_sm(self) -> Self; /// Sets `flex()`, `flex_row()`, `items_center()`
} fn h_flex(self) -> Self
where
Self: Sized,
{
self.flex().flex_row().items_center()
}
impl<V: 'static> StyledExt for Div<V> { /// Vertically stacks elements.
fn text_ui_size(self, size: UITextSize) -> Self { ///
/// Sets `flex()`, `flex_col()`
fn v_flex(self) -> Self
where
Self: Sized,
{
self.flex().flex_col()
}
fn text_ui_size(self, size: UITextSize) -> Self
where
Self: Sized,
{
let size = size.rems(); let size = size.rems();
self.text_size(size) self.text_size(size)
} }
/// The default size for UI text. /// The default size for UI text.
/// ///
/// `0.825rem` or `14px` at the default scale of `1rem` = `16px`. /// `0.825rem` or `14px` at the default scale of `1rem` = `16px`.
@ -22,11 +40,15 @@ impl<V: 'static> StyledExt for Div<V> {
/// Note: The absolute size of this text will change based on a user's `ui_scale` setting. /// Note: The absolute size of this text will change based on a user's `ui_scale` setting.
/// ///
/// Use [`text_ui_sm`] for regular-sized text. /// Use [`text_ui_sm`] for regular-sized text.
fn text_ui(self) -> Self { fn text_ui(self) -> Self
where
Self: Sized,
{
let size = UITextSize::default().rems(); let size = UITextSize::default().rems();
self.text_size(size) self.text_size(size)
} }
/// The small size for UI text. /// The small size for UI text.
/// ///
/// `0.75rem` or `12px` at the default scale of `1rem` = `16px`. /// `0.75rem` or `12px` at the default scale of `1rem` = `16px`.
@ -34,9 +56,14 @@ impl<V: 'static> StyledExt for Div<V> {
/// Note: The absolute size of this text will change based on a user's `ui_scale` setting. /// Note: The absolute size of this text will change based on a user's `ui_scale` setting.
/// ///
/// Use [`text_ui`] for regular-sized text. /// Use [`text_ui`] for regular-sized text.
fn text_ui_sm(self) -> Self { fn text_ui_sm(self) -> Self
where
Self: Sized,
{
let size = UITextSize::Small.rems(); let size = UITextSize::Small.rems();
self.text_size(size) self.text_size(size)
} }
} }
impl<V: 'static> StyledExt for Div<V> {}