From 829544811aadc676614acd0a3a9f16f878105524 Mon Sep 17 00:00:00 2001 From: genusistimelord Date: Fri, 4 Aug 2023 11:12:45 -0400 Subject: [PATCH] number input fixed icon button being oversized. fixes #126 --- CHANGELOG.md | 5 +++++ examples/number_input/src/main.rs | 2 +- src/native/number_input.rs | 21 ++++++++++++++++----- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b53da51..02c3fb24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,9 +10,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - DynamicHeight to menu bar @latidoremi . - [Breaking] Custom Style Options for all widgets. - Align Option for modal @wiiznokes . +- width setting to `NumberInput`.` + +### Changed +- Changed current width to content_width for `NumberInput`. ### Fixed - TabBars hieght issue within container. +- number input buttons not rendering correctly when they are oversized. ## [0.6.0] - 2023-07-28 diff --git a/examples/number_input/src/main.rs b/examples/number_input/src/main.rs index 4da296e1..1cbc86b4 100644 --- a/examples/number_input/src/main.rs +++ b/examples/number_input/src/main.rs @@ -26,7 +26,7 @@ pub enum Message { fn main() -> iced::Result { NumberInputDemo::run(Settings { - default_text_size: 14.0, + default_text_size: 65.0, window: window::Settings { size: (250, 200), ..Default::default() diff --git a/src/native/number_input.rs b/src/native/number_input.rs index 67615ac6..bda47541 100644 --- a/src/native/number_input.rs +++ b/src/native/number_input.rs @@ -82,6 +82,8 @@ where style: ::Style, /// The font text of the [`NumberInput`](NumberInput). font: Renderer::Font, + /// The Width to use for the NumberBox Default is Length::Fill + width: Length, } impl<'a, T, Message, Renderer> NumberInput<'a, T, Message, Renderer> @@ -124,6 +126,7 @@ where on_change: Box::new(on_changed), style: ::Style::default(), font: Renderer::Font::default(), + width: Length::Fill, } } @@ -176,6 +179,13 @@ where /// Sets the width of the [`NumberInput`]. #[must_use] pub fn width(mut self, width: Length) -> Self { + self.width = width; + self + } + + /// Sets the content width of the [`NumberInput`]. + #[must_use] + pub fn content_width(mut self, width: Length) -> Self { self.content = self.content.width(width); self } @@ -289,7 +299,7 @@ where } fn width(&self) -> Length { - Length::Fill + self.width } fn height(&self) -> Length { @@ -302,7 +312,8 @@ where .width(self.width()) .height(Length::Shrink) .pad(padding); - let content = self.content.layout(renderer, &limits.loose()); + let content = self.content.layout(renderer, &limits); + let limits2 = Limits::new(Size::new(0.0, 0.0), content.size()); let txt_size = self.size.unwrap_or_else(|| renderer.default_size()); let icon_size = txt_size * 2.5 / 4.0; @@ -317,17 +328,17 @@ where .width(Length::Shrink) .push(btn_mod('+')) .push(btn_mod('-')) - .layout(renderer, &limits.loose()) + .layout(renderer, &limits2.loose()) } else { Column::<(), Renderer>::new() .spacing(1) .width(Length::Shrink) .push(btn_mod('▲')) .push(btn_mod('▼')) - .layout(renderer, &limits.loose()) + .layout(renderer, &limits2.loose()) }; let intrinsic = Size::new( - content.size().width - 3.0, + content.size().width - 1.0, content.size().height.max(modifier.size().height), ); modifier.align(Alignment::End, Alignment::Center, intrinsic);