fix: request redraw on hover state change in dropdown widget

This also add a missing request when dropdown opens
This commit is contained in:
Hojjat 2026-08-18 18:39:52 -06:00 • committed by Michael Murphy
parent 75e9ee7e65
commit a5267e623f
3 changed files with 25 additions and 0 deletions

View file

@ -508,6 +508,21 @@ where
}
*hovered_guard = Some(new_hovered_option);
} else {
let mut hovered_guard = self.hovered_option.lock().unwrap();
if hovered_guard.is_some() {
*hovered_guard = None;
shell.request_redraw();
}
}
}
Event::Mouse(mouse::Event::CursorLeft) => {
let mut hovered_guard = self.hovered_option.lock().unwrap();
if hovered_guard.is_some() {
*hovered_guard = None;
shell.request_redraw();
}
}
Event::Touch(touch::Event::FingerPressed { .. }) => {

View file

@ -395,6 +395,15 @@ where
if *self.hovered_option != previous_hover_option {
shell.request_redraw();
}
} else if self.hovered_option.is_some() {
*self.hovered_option = None;
shell.request_redraw();
}
}
Event::Mouse(mouse::Event::CursorLeft) => {
if self.hovered_option.is_some() {
*self.hovered_option = None;
shell.request_redraw();
}
}
Event::Touch(touch::Event::FingerPressed { .. }) => {

View file

@ -567,6 +567,7 @@ pub fn update<
state: &mut State,
on_selected: Arc<dyn Fn(usize) -> Message + Send + Sync + 'static>| {
state.is_open.store(true, Ordering::Relaxed);
shell.request_redraw();
let mut hovered_guard = state.hovered_option.lock().unwrap();
*hovered_guard = selected;
let id = window::Id::unique();