From 057ee5f0866d3b9bd281074a4e85d9381898e304 Mon Sep 17 00:00:00 2001 From: Michael Aaron Murphy Date: Tue, 28 May 2024 07:46:28 +0200 Subject: [PATCH] feat(headerbar): add field to configure density --- src/widget/header_bar.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/widget/header_bar.rs b/src/widget/header_bar.rs index af45fb09..21701d40 100644 --- a/src/widget/header_bar.rs +++ b/src/widget/header_bar.rs @@ -1,6 +1,7 @@ // Copyright 2022 System76 // SPDX-License-Identifier: MPL-2.0 +use crate::config::Density; use crate::{ext::CollectionWidget, widget, Element}; use apply::Apply; use derive_setters::Setters; @@ -20,6 +21,7 @@ pub fn header_bar<'a, Message>() -> HeaderBar<'a, Message> { start: Vec::new(), center: Vec::new(), end: Vec::new(), + density: None, focused: false, } } @@ -50,9 +52,6 @@ pub struct HeaderBar<'a, Message> { #[setters(strip_option)] on_right_click: Option, - /// Focused state of the window - focused: bool, - /// Elements packed at the start of the headerbar. #[setters(skip)] start: Vec>, @@ -64,6 +63,13 @@ pub struct HeaderBar<'a, Message> { /// Elements packed at the end of the headerbar. #[setters(skip)] end: Vec>, + + /// Controls the density of the headerbar. + #[setters(strip_option)] + density: Option, + + /// Focused state of the window + focused: bool, } impl<'a, Message: Clone + 'static> HeaderBar<'a, Message> { @@ -263,7 +269,7 @@ impl<'a, Message: Clone + 'static> HeaderBar<'a, Message> { end.push(widget::horizontal_space(Length::Fixed(12.0)).into()); end.push(self.window_controls()); - let (height, padding) = match crate::config::header_size() { + let (height, padding) = match self.density.unwrap_or_else(|| crate::config::header_size()) { crate::config::Density::Compact => (36.0, 2.0), crate::config::Density::Standard => (48.0, 8.0), };