Browse Source

Merge pull request #7206 from Abdesol/master

Disabled button can be pressed issue/bug
release/0.10.11
Max Katz 4 years ago
committed by Dan Walmsley
parent
commit
65a29eca7b
  1. 17
      src/Avalonia.Controls/Button.cs
  2. 14
      tests/Avalonia.Controls.UnitTests/ButtonTests.cs

17
src/Avalonia.Controls/Button.cs

@ -304,15 +304,18 @@ namespace Avalonia.Controls
/// </summary>
protected virtual void OnClick()
{
OpenFlyout();
if (IsEffectivelyEnabled)
{
OpenFlyout();
var e = new RoutedEventArgs(ClickEvent);
RaiseEvent(e);
var e = new RoutedEventArgs(ClickEvent);
RaiseEvent(e);
if (!e.Handled && Command?.CanExecute(CommandParameter) == true)
{
Command.Execute(CommandParameter);
e.Handled = true;
if (!e.Handled && Command?.CanExecute(CommandParameter) == true)
{
Command.Execute(CommandParameter);
e.Handled = true;
}
}
}

14
tests/Avalonia.Controls.UnitTests/ButtonTests.cs

@ -295,6 +295,20 @@ namespace Avalonia.Controls.UnitTests
target.CommandParameter = false;
Assert.False(target.IsEffectivelyEnabled);
}
[Fact]
public void Button_Invokes_Doesnt_Execute_When_Button_Disabled()
{
var target = new Button();
var raised = 0;
target.IsEnabled = false;
target.Click += (s, e) => ++raised;
target.RaiseEvent(new RoutedEventArgs(AccessKeyHandler.AccessKeyPressedEvent));
Assert.Equal(0, raised);
}
private class TestButton : Button, IRenderRoot
{

Loading…
Cancel
Save