Browse Source
Button.IsDefault should not work when button is not effectively visible (#18484)
pull/18315/head
pavelovcharov
11 months ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with
44 additions and
2 deletions
-
src/Avalonia.Controls/Button.cs
-
tests/Avalonia.Controls.UnitTests/ButtonTests.cs
|
|
|
@ -678,7 +678,7 @@ namespace Avalonia.Controls |
|
|
|
/// <param name="e">The event args.</param>
|
|
|
|
private void RootDefaultKeyDown(object? sender, KeyEventArgs e) |
|
|
|
{ |
|
|
|
if (e.Key == Key.Enter && IsVisible && IsEnabled) |
|
|
|
if (e.Key == Key.Enter && IsEffectivelyVisible && IsEffectivelyEnabled) |
|
|
|
{ |
|
|
|
OnClick(); |
|
|
|
e.Handled = true; |
|
|
|
@ -692,7 +692,7 @@ namespace Avalonia.Controls |
|
|
|
/// <param name="e">The event args.</param>
|
|
|
|
private void RootCancelKeyDown(object? sender, KeyEventArgs e) |
|
|
|
{ |
|
|
|
if (e.Key == Key.Escape && IsVisible && IsEnabled) |
|
|
|
if (e.Key == Key.Escape && IsEffectivelyVisible && IsEffectivelyEnabled) |
|
|
|
{ |
|
|
|
OnClick(); |
|
|
|
e.Handled = true; |
|
|
|
|
|
|
|
@ -455,6 +455,27 @@ namespace Avalonia.Controls.UnitTests |
|
|
|
Assert.Equal(2, raised); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Button_IsDefault_Should_Not_Work_When_Button_Is_Not_Effectively_Visible() |
|
|
|
{ |
|
|
|
using (UnitTestApplication.Start(TestServices.StyledWindow)) |
|
|
|
{ |
|
|
|
var raised = 0; |
|
|
|
var panel = new Panel(); |
|
|
|
var target = new Button(); |
|
|
|
panel.Children.Add(target); |
|
|
|
var window = new Window { Content = panel }; |
|
|
|
window.Show(); |
|
|
|
|
|
|
|
target.Click += (s, e) => ++raised; |
|
|
|
|
|
|
|
target.IsDefault = true; |
|
|
|
panel.IsVisible = false; |
|
|
|
window.RaiseEvent(CreateKeyDownEvent(Key.Enter)); |
|
|
|
Assert.Equal(0, raised); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Button_IsCancel_Works() |
|
|
|
@ -489,6 +510,27 @@ namespace Avalonia.Controls.UnitTests |
|
|
|
Assert.Equal(2, raised); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Button_IsCancel_Should_Not_Work_When_Button_Is_Not_Effectively_Visible() |
|
|
|
{ |
|
|
|
using (UnitTestApplication.Start(TestServices.StyledWindow)) |
|
|
|
{ |
|
|
|
var raised = 0; |
|
|
|
var panel = new Panel(); |
|
|
|
var target = new Button(); |
|
|
|
panel.Children.Add(target); |
|
|
|
var window = new Window { Content = panel }; |
|
|
|
window.Show(); |
|
|
|
|
|
|
|
target.Click += (s, e) => ++raised; |
|
|
|
|
|
|
|
target.IsCancel = true; |
|
|
|
panel.IsVisible = false; |
|
|
|
window.RaiseEvent(CreateKeyDownEvent(Key.Escape)); |
|
|
|
Assert.Equal(0, raised); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Button_CommandParameter_Does_Not_Change_While_Execution() |
|
|
|
|