fix: request redraw on hover state change in dropdown widget
This also add a missing request when dropdown opens
This commit is contained in:
parent
75e9ee7e65
commit
a5267e623f
3 changed files with 25 additions and 0 deletions
|
|
@ -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 { .. }) => {
|
||||
|
|
|
|||
|
|
@ -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 { .. }) => {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue