feat(segmented-button): configurable font size

This commit is contained in:
Michael Aaron Murphy 2023-01-27 04:44:25 +01:00 committed by Michael Murphy
parent b79fa9d2a9
commit 843919e44f
3 changed files with 9 additions and 16 deletions

View file

@ -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);

View file

@ -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);

View file

@ -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(),