From 843919e44f0a00c33c29358359be5b4bfa41ab00 Mon Sep 17 00:00:00 2001 From: Michael Aaron Murphy Date: Fri, 27 Jan 2023 04:44:25 +0100 Subject: [PATCH] feat(segmented-button): configurable font size --- src/widget/segmented_button/horizontal.rs | 4 +--- src/widget/segmented_button/vertical.rs | 4 +--- src/widget/segmented_button/widget.rs | 17 +++++++---------- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/widget/segmented_button/horizontal.rs b/src/widget/segmented_button/horizontal.rs index e51d6036..8fff084b 100644 --- a/src/widget/segmented_button/horizontal.rs +++ b/src/widget/segmented_button/horizontal.rs @@ -75,9 +75,7 @@ where #[allow(clippy::cast_sign_loss)] fn variant_layout(&self, renderer: &Renderer, limits: &layout::Limits) -> layout::Node { let limits = limits.width(self.width); - let text_size = renderer.default_size(); - - let (mut width, height) = self.max_button_dimensions(renderer, text_size, limits.max()); + let (mut width, height) = self.max_button_dimensions(renderer, limits.max()); let num = self.model.items.len(); let spacing = f32::from(self.spacing); diff --git a/src/widget/segmented_button/vertical.rs b/src/widget/segmented_button/vertical.rs index ab4897ec..04f3ccc0 100644 --- a/src/widget/segmented_button/vertical.rs +++ b/src/widget/segmented_button/vertical.rs @@ -76,9 +76,7 @@ where #[allow(clippy::cast_sign_loss)] fn variant_layout(&self, renderer: &Renderer, limits: &layout::Limits) -> layout::Node { let limits = limits.width(self.width); - let text_size = renderer.default_size(); - - let (width, mut height) = self.max_button_dimensions(renderer, text_size, limits.max()); + let (width, mut height) = self.max_button_dimensions(renderer, limits.max()); let num = self.model.items.len(); let spacing = f32::from(self.spacing); diff --git a/src/widget/segmented_button/widget.rs b/src/widget/segmented_button/widget.rs index b12518e7..c7f9f720 100644 --- a/src/widget/segmented_button/widget.rs +++ b/src/widget/segmented_button/widget.rs @@ -92,6 +92,8 @@ where pub(super) font_hovered: Renderer::Font, /// Desired font for inactive tabs. pub(super) font_inactive: Renderer::Font, + /// Size of the font. + pub(super) font_size: u16, /// Size of icon pub(super) icon_size: u16, /// Desired width of the widget. @@ -134,7 +136,8 @@ where font_active: Renderer::Font::default(), font_hovered: Renderer::Font::default(), font_inactive: Renderer::Font::default(), - icon_size: 24, + font_size: 17, + icon_size: 16, height: Length::Shrink, width: Length::Fill, spacing: 0, @@ -204,12 +207,7 @@ where self } - pub(super) fn max_button_dimensions( - &self, - renderer: &Renderer, - text_size: u16, - bounds: Size, - ) -> (f32, f32) { + pub(super) fn max_button_dimensions(&self, renderer: &Renderer, bounds: Size) -> (f32, f32) { let mut width = 0.0f32; let mut height = 0.0f32; @@ -219,7 +217,7 @@ where // Add text to measurement if text was given. if let Some(text) = self.model.text(key) { - let (w, h) = renderer.measure(text, text_size, Default::default(), bounds); + let (w, h) = renderer.measure(text, self.font_size, Default::default(), bounds); button_width = w; button_height = h; @@ -469,7 +467,6 @@ where } let y = bounds.center_y(); - let text_size = renderer.default_size(); // Draw the image beside the text. let horizontal_alignment = if let Some(icon) = self.model.icon(key) { @@ -518,7 +515,7 @@ where // Draw the text in this button. renderer.fill_text(iced_native::text::Text { content: text, - size: f32::from(text_size), + size: f32::from(self.font_size), bounds, color: status_appearance.text_color, font: font.clone(),