Fix: prevent calendar popup from closing on dropdown change (#7409)

Currently, DatePickerButton will close without saving whenever a user
clicks a dropdown from year/month/date. The issue is caused because the
system mistakenly interprets the user as clicking off of the calendar.
This is unexpected and creates an unpleasant experience for the user.
This change now allows the user to use the dropdowns as expected; it
will close on save or cancel. The calendar still closes when user clicks
off of it, as before. The changes here are made in:
crates/egui_extras/src/datepicker/button.rs

I will admit that I am not an experienced Rust developer. The changes
were made with the help of ChatGPT 4.0.
I have tested the changes locally, as I am using the date picker in my
project.


* Closes <https://github.com/emilk/egui/issues/THE_RELEVANT_ISSUE>
* [x] I have followed the instructions in the PR template

---------

Co-authored-by: Lucas Meurer <hi@lucasmerlin.me>
This commit is contained in:
Aleksandr Strizhevskiy 2025-09-04 07:13:28 -04:00 committed by GitHub
parent 3a2094e80e
commit 763e2df9f9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 4 additions and 0 deletions

View File

@ -192,7 +192,11 @@ impl Widget for DatePickerButton<'_> {
button_response.mark_changed();
}
// We don't want to close our popup if any other popup is open, since other popups would
// most likely be the combo boxes in the date picker.
let any_popup_open = ui.ctx().is_popup_open();
if !button_response.clicked()
&& !any_popup_open
&& (ui.input(|i| i.key_pressed(Key::Escape)) || area_response.clicked_elsewhere())
{
button_state.picker_visible = false;