Use ui_size to set relative font sizes

Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
This commit is contained in:
Nate Butler
2023-10-18 17:02:57 -04:00
co-authored by Marshall Bowers
parent 3f076eeda6
commit 7b2782c0f6
5 changed files with 31 additions and 81 deletions
+3 -13
View File
@@ -5,9 +5,7 @@ use gpui3::{div, Div};
use crate::prelude::*;
use crate::settings::user_settings;
use crate::theme::theme;
use crate::{
h_stack, v_stack, Avatar, Icon, IconColor, IconElement, IconSize, Label, LabelColor, LabelSize,
};
use crate::{h_stack, v_stack, Avatar, Icon, IconColor, IconElement, IconSize, Label, LabelColor};
#[derive(Clone, Copy, Default, Debug, PartialEq)]
pub enum ListItemVariant {
@@ -129,11 +127,7 @@ impl<S: 'static + Send + Sync + Clone> ListHeader<S> {
.color(IconColor::Muted)
.size(IconSize::Small)
}))
.child(
Label::new(self.label.clone())
.color(LabelColor::Muted)
.size(LabelSize::Small),
),
.child(Label::new(self.label.clone()).color(LabelColor::Muted)),
)
.child(disclosure_control),
)
@@ -186,11 +180,7 @@ impl<S: 'static + Send + Sync + Clone> ListSubHeader<S> {
.color(IconColor::Muted)
.size(IconSize::Small)
}))
.child(
Label::new(self.label.clone())
.color(LabelColor::Muted)
.size(LabelSize::Small),
),
.child(Label::new(self.label.clone()).color(LabelColor::Muted)),
),
)
}
+2 -2
View File
@@ -1,7 +1,7 @@
use std::marker::PhantomData;
use crate::prelude::*;
use crate::{v_stack, Buffer, Icon, IconButton, Label, LabelSize};
use crate::{v_stack, Buffer, Icon, IconButton, Label};
#[derive(Element)]
pub struct MultiBuffer<S: 'static + Send + Sync + Clone> {
@@ -33,7 +33,7 @@ impl<S: 'static + Send + Sync + Clone> MultiBuffer<S> {
.justify_between()
.p_4()
.bg(theme.lowest.base.default.background)
.child(Label::new("main.rs").size(LabelSize::Small))
.child(Label::new("main.rs"))
.child(IconButton::new(Icon::ArrowUpRight)),
)
.child(buffer)
+13 -33
View File
@@ -5,7 +5,7 @@ use gpui3::{DefiniteLength, Hsla, Interactive, MouseButton, WindowContext};
use crate::prelude::*;
use crate::settings::user_settings;
use crate::{h_stack, Icon, IconColor, IconElement, Label, LabelColor, LabelSize};
use crate::{h_stack, Icon, IconColor, IconElement, Label, LabelColor};
#[derive(Default, PartialEq, Clone, Copy)]
pub enum IconPosition {
@@ -137,9 +137,7 @@ impl<S: 'static + Send + Sync + Clone> Button<S> {
}
fn render_label(&self) -> Label<S> {
Label::new(self.label.clone())
.size(LabelSize::Small)
.color(self.label_color())
Label::new(self.label.clone()).color(self.label_color())
}
fn render_icon(&self, icon_color: IconColor) -> Option<IconElement<S>> {
@@ -153,7 +151,7 @@ impl<S: 'static + Send + Sync + Clone> Button<S> {
let mut el = h_stack()
.p_1()
.text_size(ui_size(1.125))
.text_size(ui_size(1.))
.rounded_md()
.border()
.border_color(border_color)
@@ -205,7 +203,7 @@ mod stories {
use gpui3::rems;
use strum::IntoEnumIterator;
use crate::{h_stack, v_stack, LabelColor, LabelSize, Story};
use crate::{h_stack, v_stack, LabelColor, Story};
use super::*;
@@ -241,9 +239,7 @@ mod stories {
v_stack()
.gap_1()
.child(
Label::new(state.to_string())
.color(LabelColor::Muted)
.size(LabelSize::Small),
Label::new(state.to_string()).color(LabelColor::Muted),
)
.child(
Button::new("Label")
@@ -256,9 +252,7 @@ mod stories {
v_stack()
.gap_1()
.child(
Label::new(state.to_string())
.color(LabelColor::Muted)
.size(LabelSize::Small),
Label::new(state.to_string()).color(LabelColor::Muted),
)
.child(
Button::new("Label")
@@ -273,9 +267,7 @@ mod stories {
v_stack()
.gap_1()
.child(
Label::new(state.to_string())
.color(LabelColor::Muted)
.size(LabelSize::Small),
Label::new(state.to_string()).color(LabelColor::Muted),
)
.child(
Button::new("Label")
@@ -293,9 +285,7 @@ mod stories {
v_stack()
.gap_1()
.child(
Label::new(state.to_string())
.color(LabelColor::Muted)
.size(LabelSize::Small),
Label::new(state.to_string()).color(LabelColor::Muted),
)
.child(
Button::new("Label")
@@ -308,9 +298,7 @@ mod stories {
v_stack()
.gap_1()
.child(
Label::new(state.to_string())
.color(LabelColor::Muted)
.size(LabelSize::Small),
Label::new(state.to_string()).color(LabelColor::Muted),
)
.child(
Button::new("Label")
@@ -325,9 +313,7 @@ mod stories {
v_stack()
.gap_1()
.child(
Label::new(state.to_string())
.color(LabelColor::Muted)
.size(LabelSize::Small),
Label::new(state.to_string()).color(LabelColor::Muted),
)
.child(
Button::new("Label")
@@ -345,9 +331,7 @@ mod stories {
v_stack()
.gap_1()
.child(
Label::new(state.to_string())
.color(LabelColor::Muted)
.size(LabelSize::Small),
Label::new(state.to_string()).color(LabelColor::Muted),
)
.child(
Button::new("Label")
@@ -361,9 +345,7 @@ mod stories {
v_stack()
.gap_1()
.child(
Label::new(state.to_string())
.color(LabelColor::Muted)
.size(LabelSize::Small),
Label::new(state.to_string()).color(LabelColor::Muted),
)
.child(
Button::new("Label")
@@ -379,9 +361,7 @@ mod stories {
v_stack()
.gap_1()
.child(
Label::new(state.to_string())
.color(LabelColor::Muted)
.size(LabelSize::Small),
Label::new(state.to_string()).color(LabelColor::Muted),
)
.child(
Button::new("Label")
+5 -32
View File
@@ -38,19 +38,11 @@ impl LabelColor {
}
}
#[derive(Default, PartialEq, Copy, Clone)]
pub enum LabelSize {
#[default]
Default,
Small,
}
#[derive(Element, Clone)]
pub struct Label<S: 'static + Send + Sync + Clone> {
state_type: PhantomData<S>,
label: SharedString,
color: LabelColor,
size: LabelSize,
strikethrough: bool,
}
@@ -60,7 +52,6 @@ impl<S: 'static + Send + Sync + Clone> Label<S> {
state_type: PhantomData,
label: label.into(),
color: LabelColor::Default,
size: LabelSize::Default,
strikethrough: false,
}
}
@@ -70,11 +61,6 @@ impl<S: 'static + Send + Sync + Clone> Label<S> {
self
}
pub fn size(mut self, size: LabelSize) -> Self {
self.size = size;
self
}
pub fn set_strikethrough(mut self, strikethrough: bool) -> Self {
self.strikethrough = strikethrough;
self
@@ -95,6 +81,7 @@ impl<S: 'static + Send + Sync + Clone> Label<S> {
.bg(LabelColor::Hidden.hsla(cx)),
)
})
.text_size(ui_size(1.))
.text_color(self.color.hsla(cx))
.child(self.label.clone())
}
@@ -105,7 +92,6 @@ pub struct HighlightedLabel<S: 'static + Send + Sync + Clone> {
state_type: PhantomData<S>,
label: SharedString,
color: LabelColor,
size: LabelSize,
highlight_indices: Vec<usize>,
strikethrough: bool,
}
@@ -116,7 +102,6 @@ impl<S: 'static + Send + Sync + Clone> HighlightedLabel<S> {
state_type: PhantomData,
label: label.into(),
color: LabelColor::Default,
size: LabelSize::Default,
highlight_indices,
strikethrough: false,
}
@@ -127,11 +112,6 @@ impl<S: 'static + Send + Sync + Clone> HighlightedLabel<S> {
self
}
pub fn size(mut self, size: LabelSize) -> Self {
self.size = size;
self
}
pub fn set_strikethrough(mut self, strikethrough: bool) -> Self {
self.strikethrough = strikethrough;
self
@@ -191,17 +171,10 @@ impl<S: 'static + Send + Sync + Clone> HighlightedLabel<S> {
.bg(LabelColor::Hidden.hsla(cx)),
)
})
.children(runs.into_iter().map(|run| {
let mut div = div();
if self.size == LabelSize::Small {
div = div.text_xs();
} else {
div = div.text_sm();
}
div.text_color(run.color).child(run.text)
}))
.children(
runs.into_iter()
.map(|run| div().text_color(run.color).child(run.text)),
)
}
}
+8 -1
View File
@@ -158,9 +158,16 @@ impl HighlightColor {
}
pub fn ui_size(size: f32) -> Rems {
const UI_SCALE_RATIO: f32 = 0.875;
let setting = user_settings();
rems(*setting.ui_scale * size)
let rems = rems(*setting.ui_scale * UI_SCALE_RATIO * size);
let px = rems * 16.0;
dbg!(rems, rems * 16.0);
rems
}
#[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy, EnumIter)]