Use size thresholds for panel sizing in libcosmic

Signed-off-by: Ryan Brue <ryanbrue.dev@gmail.com>
This commit is contained in:
Ryan Brue 2025-05-28 13:59:07 -05:00 committed by Ashley Wulber
parent b73532f62f
commit 6fb4a4a43e

View file

@ -426,23 +426,24 @@ impl Context {
pub fn text<'a>(&self, msg: impl Into<Cow<'a, str>>) -> crate::widget::Text<'a, crate::Theme> {
let msg = msg.into();
let t = match self.size {
Size::PanelSize(PanelSize::XL) => crate::widget::text::title2,
Size::PanelSize(PanelSize::L) => crate::widget::text::title3,
Size::PanelSize(PanelSize::M) => crate::widget::text::title4,
Size::PanelSize(PanelSize::S) => crate::widget::text::body,
Size::PanelSize(PanelSize::XS) => crate::widget::text::body,
Size::PanelSize(PanelSize::Custom(s)) => {
if s >= 80 {
crate::widget::text::title2
} else if s >= 64 {
crate::widget::text::title3
} else if s >= 48 {
crate::widget::text::title4
} else {
Size::Hardcoded(_) => crate::widget::text,
Size::PanelSize(ref s) => {
let size = s.get_applet_icon_size_with_padding(false);
let size_threshold_small = PanelSize::S.get_applet_icon_size_with_padding(false);
let size_threshold_medium = PanelSize::M.get_applet_icon_size_with_padding(false);
let size_threshold_large = PanelSize::L.get_applet_icon_size_with_padding(false);
if size <= size_threshold_small {
crate::widget::text::body
} else if size <= size_threshold_medium {
crate::widget::text::title4
} else if size <= size_threshold_large {
crate::widget::text::title3
} else {
crate::widget::text::title2
}
}
Size::Hardcoded(_) => crate::widget::text,
};
t(msg).font(crate::font::default())
}