From ee949bd3362e71eeabe1c2ec0090e0b9dd4c9e2b Mon Sep 17 00:00:00 2001 From: Tayfun Bocek Date: Tue, 7 May 2024 18:12:06 +0300 Subject: [PATCH] Allow disabling scroll events for NumberInput. --- src/widgets/number_input.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/widgets/number_input.rs b/src/widgets/number_input.rs index 7a8a24d9..f5b6b544 100644 --- a/src/widgets/number_input.rs +++ b/src/widgets/number_input.rs @@ -85,6 +85,8 @@ where font: Renderer::Font, /// The Width to use for the ``NumberBox`` Default is ``Length::Fill`` width: Length, + /// Ignore mouse scroll events for the [`NumberInput`] Default is ``false``. + ignore_scroll_events: bool, } impl<'a, T, Message, Theme, Renderer> NumberInput<'a, T, Message, Theme, Renderer> @@ -128,6 +130,7 @@ where style: ::Style::default(), font: Renderer::Font::default(), width: Length::Shrink, + ignore_scroll_events: false, } } @@ -222,6 +225,14 @@ where self } + /// Enable or disable mouse scrolling events of the [`NumberInput`], by default this is set to + /// ``false``. + #[must_use] + pub fn ignore_scroll(mut self, ignore: bool) -> Self { + self.ignore_scroll_events = ignore; + self + } + /// Decrease current value by step of the [`NumberInput`]. fn decrease_val(&mut self, shell: &mut Shell) { if self.bounds.1 - self.bounds.0 < self.step || self.value < self.bounds.0 + self.step { @@ -516,7 +527,9 @@ where } } } - Event::Mouse(mouse::Event::WheelScrolled { delta }) if mouse_over_widget => { + Event::Mouse(mouse::Event::WheelScrolled { delta }) + if mouse_over_widget && !self.ignore_scroll_events => + { match delta { mouse::ScrollDelta::Lines { y, .. } | mouse::ScrollDelta::Pixels { y, .. } => { if y.is_sign_positive() {