diff --git a/src/Avalonia.Controls/Calendar/CalendarDatePicker.cs b/src/Avalonia.Controls/Calendar/CalendarDatePicker.cs index a71dad5abd..3d592e9ab5 100644 --- a/src/Avalonia.Controls/Calendar/CalendarDatePicker.cs +++ b/src/Avalonia.Controls/Calendar/CalendarDatePicker.cs @@ -369,7 +369,7 @@ namespace Avalonia.Controls if (!_ignoreButtonClick) { - HandlePopUp(); + TogglePopUp(); } else { @@ -458,7 +458,7 @@ namespace Avalonia.Controls if (!_ignoreButtonClick) { - HandlePopUp(); + TogglePopUp(); } else { @@ -650,7 +650,7 @@ namespace Avalonia.Controls { if (!_ignoreButtonClick) { - HandlePopUp(); + TogglePopUp(); } else { @@ -669,7 +669,11 @@ namespace Avalonia.Controls } } - private void HandlePopUp() + /// + /// Toggles the property to open/close the calendar popup. + /// This will automatically adjust control focus as well. + /// + private void TogglePopUp() { if (IsDropDownOpen) { @@ -678,7 +682,9 @@ namespace Avalonia.Controls } else { - ProcessTextBox(); + SetSelectedDate(); + IsDropDownOpen = true; + _calendar!.Focus(); } } @@ -778,7 +784,7 @@ namespace Avalonia.Controls { if ((e.KeyModifiers & KeyModifiers.Control) == KeyModifiers.Control) { - HandlePopUp(); + TogglePopUp(); return true; } break; @@ -788,13 +794,6 @@ namespace Avalonia.Controls return false; } - private void ProcessTextBox() - { - SetSelectedDate(); - IsDropDownOpen = true; - _calendar!.Focus(); - } - private void SetSelectedDate() { if (_textBox != null)