mirror of
https://github.com/emilk/egui.git
synced 2026-09-01 14:20:04 -04:00
Avoid deadlocks by using lambdas for context lock (#2625)
ctx.input().key_pressed(Key::A) -> ctx.input(|i| i.key_pressed(Key::A))
This commit is contained in:
@@ -64,9 +64,7 @@ impl<'a> Widget for DatePickerButton<'a> {
|
||||
fn ui(self, ui: &mut Ui) -> egui::Response {
|
||||
let id = ui.make_persistent_id(self.id_source);
|
||||
let mut button_state = ui
|
||||
.memory()
|
||||
.data
|
||||
.get_persisted::<DatePickerButtonState>(id)
|
||||
.memory_mut(|mem| mem.data.get_persisted::<DatePickerButtonState>(id))
|
||||
.unwrap_or_default();
|
||||
|
||||
let mut text = RichText::new(format!("{} 📆", self.selection.format("%Y-%m-%d")));
|
||||
@@ -81,7 +79,7 @@ impl<'a> Widget for DatePickerButton<'a> {
|
||||
let mut button_response = ui.add(button);
|
||||
if button_response.clicked() {
|
||||
button_state.picker_visible = true;
|
||||
ui.memory().data.insert_persisted(id, button_state.clone());
|
||||
ui.memory_mut(|mem| mem.data.insert_persisted(id, button_state.clone()));
|
||||
}
|
||||
|
||||
if button_state.picker_visible {
|
||||
@@ -131,10 +129,10 @@ impl<'a> Widget for DatePickerButton<'a> {
|
||||
}
|
||||
|
||||
if !button_response.clicked()
|
||||
&& (ui.input().key_pressed(Key::Escape) || area_response.clicked_elsewhere())
|
||||
&& (ui.input(|i| i.key_pressed(Key::Escape)) || area_response.clicked_elsewhere())
|
||||
{
|
||||
button_state.picker_visible = false;
|
||||
ui.memory().data.insert_persisted(id, button_state);
|
||||
ui.memory_mut(|mem| mem.data.insert_persisted(id, button_state));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user