diff options
author | 2024-10-25 22:36:55 +0200 | |
---|---|---|
committer | 2024-11-05 23:52:58 +0100 | |
commit | a84b328dcc3e2f941f9595a2f8c3b1d061442722 (patch) | |
tree | fbcda7b3317e67c4325f763dec78ed7d9c6a147a | |
parent | f02bfc3f68322bea0c56283d76888714be401ec2 (diff) | |
download | iced-a84b328dcc3e2f941f9595a2f8c3b1d061442722.tar.gz iced-a84b328dcc3e2f941f9595a2f8c3b1d061442722.tar.bz2 iced-a84b328dcc3e2f941f9595a2f8c3b1d061442722.zip |
Implement `reactive-rendering` for `combo_box`
-rw-r--r-- | widget/src/combo_box.rs | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/widget/src/combo_box.rs b/widget/src/combo_box.rs index 6c5d2309..8b8e895d 100644 --- a/widget/src/combo_box.rs +++ b/widget/src/combo_box.rs @@ -54,7 +54,6 @@ //! } //! } //! ``` -use crate::core::event; use crate::core::keyboard; use crate::core::keyboard::key; use crate::core::layout::{self, Layout}; @@ -64,6 +63,7 @@ use crate::core::renderer; use crate::core::text; use crate::core::time::Instant; use crate::core::widget::{self, Widget}; +use crate::core::window; use crate::core::{ Clipboard, Element, Event, Length, Padding, Rectangle, Shell, Size, Theme, Vector, @@ -550,10 +550,21 @@ where viewport, ); - if local_shell.event_status() == event::Status::Captured { + if local_shell.is_event_captured() { shell.capture_event(); } + if let Some(redraw_request) = local_shell.redraw_request() { + match redraw_request { + window::RedrawRequest::NextFrame => { + shell.request_redraw(); + } + window::RedrawRequest::At(at) => { + shell.request_redraw_at(at); + } + } + } + // Then finally react to them here for message in local_messages { let TextInputEvent::TextChanged(new_value) = message; @@ -580,6 +591,7 @@ where ); }); shell.invalidate_layout(); + shell.request_redraw(); } let is_focused = { @@ -624,8 +636,8 @@ where } shell.capture_event(); + shell.request_redraw(); } - (key::Named::ArrowUp, _) | (key::Named::Tab, true) => { if let Some(index) = &mut menu.hovered_option { if *index == 0 { @@ -661,6 +673,7 @@ where } shell.capture_event(); + shell.request_redraw(); } (key::Named::ArrowDown, _) | (key::Named::Tab, false) @@ -708,6 +721,7 @@ where } shell.capture_event(); + shell.request_redraw(); } _ => {} } |