summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-10-25 22:36:55 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-11-05 23:52:58 +0100
commita84b328dcc3e2f941f9595a2f8c3b1d061442722 (patch)
treefbcda7b3317e67c4325f763dec78ed7d9c6a147a
parentf02bfc3f68322bea0c56283d76888714be401ec2 (diff)
downloadiced-a84b328dcc3e2f941f9595a2f8c3b1d061442722.tar.gz
iced-a84b328dcc3e2f941f9595a2f8c3b1d061442722.tar.bz2
iced-a84b328dcc3e2f941f9595a2f8c3b1d061442722.zip
Implement `reactive-rendering` for `combo_box`
-rw-r--r--widget/src/combo_box.rs20
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();
}
_ => {}
}