From a4c08adeb79e8188badc45b14c5b168f7cffda7e Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Sat, 26 Sep 2020 11:41:23 +0200 Subject: [PATCH 1/3] fixes Issue #3428 : ComboBox should react on PointerReleasedEvent instead of PointerPressedEvent --- src/Avalonia.Controls/ComboBox.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/ComboBox.cs b/src/Avalonia.Controls/ComboBox.cs index 27313b0b4c..02a9daee75 100644 --- a/src/Avalonia.Controls/ComboBox.cs +++ b/src/Avalonia.Controls/ComboBox.cs @@ -257,7 +257,7 @@ namespace Avalonia.Controls } /// - protected override void OnPointerPressed(PointerPressedEventArgs e) + protected override void OnPointerReleased(PointerReleasedEventArgs e) { if (!e.Handled) { @@ -276,7 +276,7 @@ namespace Avalonia.Controls } } - base.OnPointerPressed(e); + base.OnPointerReleased(e); } /// From 9425ca8420cb23f63e4cc2683d17d208aa5f0ee3 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Sat, 26 Sep 2020 12:49:40 +0200 Subject: [PATCH 2/3] fixed test --- tests/Avalonia.Controls.UnitTests/ComboBoxTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Avalonia.Controls.UnitTests/ComboBoxTests.cs b/tests/Avalonia.Controls.UnitTests/ComboBoxTests.cs index 3ae91c8bba..783215fb5d 100644 --- a/tests/Avalonia.Controls.UnitTests/ComboBoxTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ComboBoxTests.cs @@ -2,7 +2,6 @@ using Avalonia.Controls.Presenters; using Avalonia.Controls.Primitives; using Avalonia.Controls.Shapes; using Avalonia.Controls.Templates; -using Avalonia.Input; using Avalonia.LogicalTree; using Avalonia.Media; using Avalonia.UnitTests; @@ -27,6 +26,7 @@ namespace Avalonia.Controls.UnitTests Assert.True(target.IsDropDownOpen); _helper.Down(target); + _helper.Up(target); Assert.False(target.IsDropDownOpen); } From c6fbe25aefdfbf29e5508853bf2f3c5ec6391141 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Sat, 26 Sep 2020 13:01:05 +0200 Subject: [PATCH 3/3] CalendarDatePicker should react on PointerReleasedEvent instead of PointerPressedEvent --- src/Avalonia.Controls/Calendar/CalendarDatePicker.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.Controls/Calendar/CalendarDatePicker.cs b/src/Avalonia.Controls/Calendar/CalendarDatePicker.cs index 046b55d49a..7c259f0a09 100644 --- a/src/Avalonia.Controls/Calendar/CalendarDatePicker.cs +++ b/src/Avalonia.Controls/Calendar/CalendarDatePicker.cs @@ -420,7 +420,7 @@ namespace Avalonia.Controls _calendar.DayButtonMouseUp -= Calendar_DayButtonMouseUp; _calendar.DisplayDateChanged -= Calendar_DisplayDateChanged; _calendar.SelectedDatesChanged -= Calendar_SelectedDatesChanged; - _calendar.PointerPressed -= Calendar_PointerPressed; + _calendar.PointerReleased -= Calendar_PointerReleased; _calendar.KeyDown -= Calendar_KeyDown; } _calendar = e.NameScope.Find(ElementCalendar); @@ -435,7 +435,7 @@ namespace Avalonia.Controls _calendar.DayButtonMouseUp += Calendar_DayButtonMouseUp; _calendar.DisplayDateChanged += Calendar_DisplayDateChanged; _calendar.SelectedDatesChanged += Calendar_SelectedDatesChanged; - _calendar.PointerPressed += Calendar_PointerPressed; + _calendar.PointerReleased += Calendar_PointerReleased; _calendar.KeyDown += Calendar_KeyDown; //_calendar.SizeChanged += new SizeChangedEventHandler(Calendar_SizeChanged); //_calendar.IsTabStop = true; @@ -831,9 +831,10 @@ namespace Avalonia.Controls } } } - private void Calendar_PointerPressed(object sender, PointerPressedEventArgs e) + private void Calendar_PointerReleased(object sender, PointerReleasedEventArgs e) { - if (e.GetCurrentPoint(this).Properties.IsLeftButtonPressed) + + if (e.InitialPressMouseButton == MouseButton.Left) { e.Handled = true; }