Browse Source

Merge pull request #7206 from Abdesol/master

Disabled button can be pressed issue/bug
release/0.10.11
Max Katz 5 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> /// </summary>
protected virtual void OnClick() protected virtual void OnClick()
{ {
OpenFlyout(); if (IsEffectivelyEnabled)
{
OpenFlyout();
var e = new RoutedEventArgs(ClickEvent); var e = new RoutedEventArgs(ClickEvent);
RaiseEvent(e); RaiseEvent(e);
if (!e.Handled && Command?.CanExecute(CommandParameter) == true) if (!e.Handled && Command?.CanExecute(CommandParameter) == true)
{ {
Command.Execute(CommandParameter); Command.Execute(CommandParameter);
e.Handled = true; e.Handled = true;
}
} }
} }

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

@ -295,6 +295,20 @@ namespace Avalonia.Controls.UnitTests
target.CommandParameter = false; target.CommandParameter = false;
Assert.False(target.IsEffectivelyEnabled); 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 private class TestButton : Button, IRenderRoot
{ {

Loading…
Cancel
Save