Browse Source

Add FocusChangedEventArgs for GotFocus/LotFocus (#20859)

* Add FocusChangedEventArgs for GotFocus/LotFocus

* Update API suppressions
dev/timill/dma-buf
Julien Lebosquain 2 weeks ago
committed by GitHub
parent
commit
b612be79db
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 96
      api/Avalonia.nupkg.xml
  2. 39
      src/Avalonia.Base/Input/FocusChangedEventArgs.cs
  3. 24
      src/Avalonia.Base/Input/GotFocusEventArgs.cs
  4. 4
      src/Avalonia.Base/Input/IInputElement.cs
  5. 20
      src/Avalonia.Base/Input/InputElement.cs
  6. 22
      src/Avalonia.Base/Input/KeyboardDevice.cs
  7. 4
      src/Avalonia.Controls.ColorPicker/ColorSpectrum/ColorSpectrum.cs
  8. 4
      src/Avalonia.Controls/AutoCompleteBox/AutoCompleteBox.cs
  9. 2
      src/Avalonia.Controls/Button.cs
  10. 4
      src/Avalonia.Controls/Calendar/Calendar.cs
  11. 4
      src/Avalonia.Controls/CalendarDatePicker/CalendarDatePicker.cs
  12. 2
      src/Avalonia.Controls/ComboBox.cs
  13. 4
      src/Avalonia.Controls/Control.cs
  14. 2
      src/Avalonia.Controls/GridSplitter.cs
  15. 2
      src/Avalonia.Controls/ItemsControl.cs
  16. 4
      src/Avalonia.Controls/MaskedTextBox.cs
  17. 2
      src/Avalonia.Controls/MenuItem.cs
  18. 4
      src/Avalonia.Controls/NumericUpDown/NumericUpDown.cs
  19. 2
      src/Avalonia.Controls/Platform/DefaultMenuInteractionHandler.cs
  20. 4
      src/Avalonia.Controls/Primitives/SelectingItemsControl.cs
  21. 2
      src/Avalonia.Controls/Primitives/TabStrip.cs
  22. 2
      src/Avalonia.Controls/Primitives/TabStripItem.cs
  23. 2
      src/Avalonia.Controls/ScrollViewer.cs
  24. 4
      src/Avalonia.Controls/SelectableTextBlock.cs
  25. 2
      src/Avalonia.Controls/TabControl.cs
  26. 2
      src/Avalonia.Controls/TabItem.cs
  27. 4
      src/Avalonia.Controls/TextBox.cs
  28. 2
      src/Avalonia.Controls/TreeView.cs
  29. 4
      tests/Avalonia.Controls.UnitTests/ListBoxTests_Single.cs

96
api/Avalonia.nupkg.xml

@ -109,6 +109,12 @@
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0001</DiagnosticId>
<Target>T:Avalonia.Input.GotFocusEventArgs</Target>
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0001</DiagnosticId>
<Target>T:Avalonia.Input.IDataObject</Target>
@ -571,6 +577,12 @@
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0001</DiagnosticId>
<Target>T:Avalonia.Input.GotFocusEventArgs</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0001</DiagnosticId>
<Target>T:Avalonia.Input.IDataObject</Target>
@ -961,6 +973,18 @@
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>F:Avalonia.Input.InputElement.GotFocusEvent</Target>
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>F:Avalonia.Input.InputElement.LostFocusEvent</Target>
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>F:Avalonia.Media.DrawingImage.ViewboxProperty</Target>
@ -1177,6 +1201,18 @@
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Input.InputElement.OnGotFocus(Avalonia.Input.GotFocusEventArgs)</Target>
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Input.InputElement.OnLostFocus(Avalonia.Interactivity.RoutedEventArgs)</Target>
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Input.InputElement.RemovePinchEndedHandler(Avalonia.Interactivity.Interactive,System.EventHandler{Avalonia.Input.PinchEndedEventArgs})</Target>
@ -1861,6 +1897,12 @@
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Platform.DefaultMenuInteractionHandler.GotFocus(System.Object,Avalonia.Input.GotFocusEventArgs)</Target>
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Platform.IInsetsManager.get_DisplayEdgeToEdge</Target>
@ -2365,6 +2407,18 @@
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>F:Avalonia.Input.InputElement.GotFocusEvent</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>F:Avalonia.Input.InputElement.LostFocusEvent</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>F:Avalonia.Media.DrawingImage.ViewboxProperty</Target>
@ -2581,6 +2635,18 @@
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Input.InputElement.OnGotFocus(Avalonia.Input.GotFocusEventArgs)</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Input.InputElement.OnLostFocus(Avalonia.Interactivity.RoutedEventArgs)</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Input.InputElement.RemovePinchEndedHandler(Avalonia.Interactivity.Interactive,System.EventHandler{Avalonia.Input.PinchEndedEventArgs})</Target>
@ -3265,6 +3331,12 @@
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Platform.DefaultMenuInteractionHandler.GotFocus(System.Object,Avalonia.Input.GotFocusEventArgs)</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Platform.IInsetsManager.get_DisplayEdgeToEdge</Target>
@ -3799,6 +3871,18 @@
<Left>baseline/Avalonia/lib/net8.0/Avalonia.OpenGL.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.OpenGL.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>E:Avalonia.Input.IInputElement.GotFocus</Target>
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>E:Avalonia.Input.IInputElement.LostFocus</Target>
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Avalonia.Input.IKeyboardNavigationHandler.Move(Avalonia.Input.IInputElement,Avalonia.Input.NavigationDirection,Avalonia.Input.KeyModifiers,System.Nullable{Avalonia.Input.KeyDeviceType})</Target>
@ -4063,6 +4147,18 @@
<Left>baseline/Avalonia/lib/net6.0/Avalonia.OpenGL.dll</Left>
<Right>current/Avalonia/lib/net6.0/Avalonia.OpenGL.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>E:Avalonia.Input.IInputElement.GotFocus</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>E:Avalonia.Input.IInputElement.LostFocus</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Avalonia.Input.IKeyboardNavigationHandler.Move(Avalonia.Input.IInputElement,Avalonia.Input.NavigationDirection,Avalonia.Input.KeyModifiers,System.Nullable{Avalonia.Input.KeyDeviceType})</Target>

39
src/Avalonia.Base/Input/FocusChangedEventArgs.cs

@ -0,0 +1,39 @@
using Avalonia.Interactivity;
namespace Avalonia.Input
{
/// <summary>
/// Represents the arguments of <see cref="InputElement.GotFocus"/> and <see cref="InputElement.LostFocus"/>.
/// </summary>
public class FocusChangedEventArgs : RoutedEventArgs, IKeyModifiersEventArgs
{
/// <summary>
/// Initializes a new instance of <see cref="FocusChangedEventArgs"/>.
/// </summary>
/// <param name="routedEvent">The routed event associated with these event args.</param>
public FocusChangedEventArgs(RoutedEvent routedEvent)
: base(routedEvent)
{
}
/// <summary>
/// Gets or sets the element that focus has moved to.
/// </summary>
public IInputElement? NewFocusedElement { get; init; }
/// <summary>
/// Gets or sets the element that previously had focus.
/// </summary>
public IInputElement? OldFocusedElement { get; init; }
/// <summary>
/// Gets or sets a value indicating how the change in focus occurred.
/// </summary>
public NavigationMethod NavigationMethod { get; init; }
/// <summary>
/// Gets or sets any key modifiers active at the time of focus.
/// </summary>
public KeyModifiers KeyModifiers { get; init; }
}
}

24
src/Avalonia.Base/Input/GotFocusEventArgs.cs

@ -1,24 +0,0 @@
using Avalonia.Interactivity;
namespace Avalonia.Input
{
/// <summary>
/// Holds arguments for a <see cref="InputElement.GotFocusEvent"/>.
/// </summary>
public class GotFocusEventArgs : RoutedEventArgs, IKeyModifiersEventArgs
{
public GotFocusEventArgs() : base(InputElement.GotFocusEvent)
{
}
/// <summary>
/// Gets or sets a value indicating how the change in focus occurred.
/// </summary>
public NavigationMethod NavigationMethod { get; init; }
/// <summary>
/// Gets or sets any key modifiers active at the time of focus.
/// </summary>
public KeyModifiers KeyModifiers { get; init; }
}
}

4
src/Avalonia.Base/Input/IInputElement.cs

@ -14,12 +14,12 @@ namespace Avalonia.Input
/// <summary>
/// Occurs when the control receives focus.
/// </summary>
event EventHandler<GotFocusEventArgs>? GotFocus;
event EventHandler<FocusChangedEventArgs>? GotFocus;
/// <summary>
/// Occurs when the control loses focus.
/// </summary>
event EventHandler<RoutedEventArgs>? LostFocus;
event EventHandler<FocusChangedEventArgs>? LostFocus;
/// <summary>
/// Occurs when a key is pressed while the control has focus.

20
src/Avalonia.Base/Input/InputElement.cs

@ -79,8 +79,8 @@ namespace Avalonia.Input
/// <summary>
/// Defines the <see cref="GotFocus"/> event.
/// </summary>
public static readonly RoutedEvent<GotFocusEventArgs> GotFocusEvent =
RoutedEvent.Register<InputElement, GotFocusEventArgs>(nameof(GotFocus), RoutingStrategies.Bubble);
public static readonly RoutedEvent<FocusChangedEventArgs> GotFocusEvent =
RoutedEvent.Register<InputElement, FocusChangedEventArgs>(nameof(GotFocus), RoutingStrategies.Bubble);
/// <summary>
/// Defines the <see cref="GettingFocus"/> event.
@ -91,8 +91,8 @@ namespace Avalonia.Input
/// <summary>
/// Defines the <see cref="LostFocus"/> event.
/// </summary>
public static readonly RoutedEvent<RoutedEventArgs> LostFocusEvent =
RoutedEvent.Register<InputElement, RoutedEventArgs>(nameof(LostFocus), RoutingStrategies.Bubble);
public static readonly RoutedEvent<FocusChangedEventArgs> LostFocusEvent =
RoutedEvent.Register<InputElement, FocusChangedEventArgs>(nameof(LostFocus), RoutingStrategies.Bubble);
/// <summary>
/// Defines the <see cref="LosingFocus"/> event.
@ -278,7 +278,7 @@ namespace Avalonia.Input
/// <summary>
/// Occurs when the control receives focus.
/// </summary>
public event EventHandler<GotFocusEventArgs>? GotFocus
public event EventHandler<FocusChangedEventArgs>? GotFocus
{
add { AddHandler(GotFocusEvent, value); }
remove { RemoveHandler(GotFocusEvent, value); }
@ -296,7 +296,7 @@ namespace Avalonia.Input
/// <summary>
/// Occurs when the control loses focus.
/// </summary>
public event EventHandler<RoutedEventArgs>? LostFocus
public event EventHandler<FocusChangedEventArgs>? LostFocus
{
add { AddHandler(LostFocusEvent, value); }
remove { RemoveHandler(LostFocusEvent, value); }
@ -593,7 +593,7 @@ namespace Avalonia.Input
UpdateIsEffectivelyEnabled();
}
private void OnGotFocusCore(GotFocusEventArgs e)
private void OnGotFocusCore(FocusChangedEventArgs e)
{
var isFocused = e.Source == this;
_isFocusVisible = isFocused && (e.NavigationMethod == NavigationMethod.Directional || e.NavigationMethod == NavigationMethod.Tab);
@ -617,11 +617,11 @@ namespace Avalonia.Input
/// for this event.
/// </summary>
/// <param name="e">Data about the event.</param>
protected virtual void OnGotFocus(GotFocusEventArgs e)
protected virtual void OnGotFocus(FocusChangedEventArgs e)
{
}
private void OnLostFocusCore(RoutedEventArgs e)
private void OnLostFocusCore(FocusChangedEventArgs e)
{
_isFocusVisible = false;
IsFocused = false;
@ -634,7 +634,7 @@ namespace Avalonia.Input
/// for this event.
/// </summary>
/// <param name="e">Data about the event.</param>
protected virtual void OnLostFocus(RoutedEventArgs e)
protected virtual void OnLostFocus(FocusChangedEventArgs e)
{
}

22
src/Avalonia.Base/Input/KeyboardDevice.cs

@ -188,25 +188,35 @@ namespace Avalonia.Input
if (changeFocus)
{
var oldElement = FocusedElement;
// Clear keyboard focus from currently focused element
if (FocusedElement != null &&
(!((Visual)FocusedElement).IsAttachedToVisualTree ||
if (oldElement != null &&
(!((Visual)oldElement).IsAttachedToVisualTree ||
_focusedRoot != ((Visual?)element)?.GetInputRoot()) &&
_focusedRoot != null)
{
ClearChildrenFocusWithin(_focusedRoot.RootElement, true);
}
SetIsFocusWithin(FocusedElement, element);
SetIsFocusWithin(oldElement, element);
_focusedElement = element;
_focusedRoot = (_focusedElement as Visual)?.GetInputRoot();
interactive?.RaiseEvent(new RoutedEventArgs(InputElement.LostFocusEvent));
interactive?.RaiseEvent(new FocusChangedEventArgs(InputElement.LostFocusEvent)
{
OldFocusedElement = oldElement,
NewFocusedElement = element,
NavigationMethod = method,
KeyModifiers = keyModifiers
});
(element as Interactive)?.RaiseEvent(new GotFocusEventArgs
(element as Interactive)?.RaiseEvent(new FocusChangedEventArgs(InputElement.GotFocusEvent)
{
OldFocusedElement = oldElement,
NewFocusedElement = element,
NavigationMethod = method,
KeyModifiers = keyModifiers,
KeyModifiers = keyModifiers
});
_textInputManager.SetFocusedElement(element);

4
src/Avalonia.Controls.ColorPicker/ColorSpectrum/ColorSpectrum.cs

@ -348,7 +348,7 @@ namespace Avalonia.Controls.Primitives
}
/// <inheritdoc/>
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
// We only want to bother with the color name tool tip if we can provide color names.
if (_selectionEllipsePanel != null &&
@ -363,7 +363,7 @@ namespace Avalonia.Controls.Primitives
}
/// <inheritdoc/>
protected override void OnLostFocus(RoutedEventArgs e)
protected override void OnLostFocus(FocusChangedEventArgs e)
{
// We only want to bother with the color name tool tip if we can provide color names.
if (_selectionEllipsePanel != null &&

4
src/Avalonia.Controls/AutoCompleteBox/AutoCompleteBox.cs

@ -740,7 +740,7 @@ namespace Avalonia.Controls
/// </summary>
/// <param name="e">A <see cref="T:Avalonia.RoutedEventArgs" />
/// that contains the event data.</param>
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
base.OnGotFocus(e);
FocusChanged(HasFocus());
@ -752,7 +752,7 @@ namespace Avalonia.Controls
/// </summary>
/// <param name="e">A <see cref="T:Avalonia.RoutedEventArgs" />
/// that contains the event data.</param>
protected override void OnLostFocus(RoutedEventArgs e)
protected override void OnLostFocus(FocusChangedEventArgs e)
{
base.OnLostFocus(e);
FocusChanged(HasFocus());

2
src/Avalonia.Controls/Button.cs

@ -453,7 +453,7 @@ namespace Avalonia.Controls
}
/// <inheritdoc/>
protected override void OnLostFocus(RoutedEventArgs e)
protected override void OnLostFocus(FocusChangedEventArgs e)
{
base.OnLostFocus(e);

4
src/Avalonia.Controls/Calendar/Calendar.cs

@ -2118,7 +2118,7 @@ namespace Avalonia.Controls
}
}
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
base.OnGotFocus(e);
HasFocusInternal = true;
@ -2157,7 +2157,7 @@ namespace Avalonia.Controls
}
}
protected override void OnLostFocus(RoutedEventArgs e)
protected override void OnLostFocus(FocusChangedEventArgs e)
{
base.OnLostFocus(e);
HasFocusInternal = false;

4
src/Avalonia.Controls/CalendarDatePicker/CalendarDatePicker.cs

@ -390,7 +390,7 @@ namespace Avalonia.Controls
}
/// <inheritdoc/>
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
base.OnGotFocus(e);
if(IsEnabled && _textBox != null && e.NavigationMethod == NavigationMethod.Tab)
@ -406,7 +406,7 @@ namespace Avalonia.Controls
}
/// <inheritdoc/>
protected override void OnLostFocus(RoutedEventArgs e)
protected override void OnLostFocus(FocusChangedEventArgs e)
{
base.OnLostFocus(e);

2
src/Avalonia.Controls/ComboBox.cs

@ -453,7 +453,7 @@ namespace Avalonia.Controls
return new ComboBoxAutomationPeer(this);
}
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
if (IsEditable && _inputTextBox != null)
{

4
src/Avalonia.Controls/Control.cs

@ -380,7 +380,7 @@ namespace Avalonia.Controls
}
/// <inheritdoc/>
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
base.OnGotFocus(e);
@ -414,7 +414,7 @@ namespace Avalonia.Controls
}
/// <inheritdoc/>
protected override void OnLostFocus(RoutedEventArgs e)
protected override void OnLostFocus(FocusChangedEventArgs e)
{
base.OnLostFocus(e);

2
src/Avalonia.Controls/GridSplitter.cs

@ -449,7 +449,7 @@ namespace Avalonia.Controls
}
}
protected override void OnLostFocus(RoutedEventArgs e)
protected override void OnLostFocus(FocusChangedEventArgs e)
{
base.OnLostFocus(e);

2
src/Avalonia.Controls/ItemsControl.cs

@ -532,7 +532,7 @@ namespace Avalonia.Controls
_itemsPresenter = e.NameScope.Find<ItemsPresenter>("PART_ItemsPresenter");
}
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
base.OnGotFocus(e);

4
src/Avalonia.Controls/MaskedTextBox.cs

@ -186,7 +186,7 @@ namespace Avalonia.Controls
protected override Type StyleKeyOverride => typeof(TextBox);
/// <inheritdoc />
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
if (HidePromptOnLeave == true && MaskProvider != null)
{
@ -283,7 +283,7 @@ namespace Avalonia.Controls
}
/// <inheritdoc />
protected override void OnLostFocus(RoutedEventArgs e)
protected override void OnLostFocus(FocusChangedEventArgs e)
{
if (HidePromptOnLeave && MaskProvider != null)
{

2
src/Avalonia.Controls/MenuItem.cs

@ -506,7 +506,7 @@ namespace Avalonia.Controls
}
/// <inheritdoc/>
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
base.OnGotFocus(e);
ItemsControlFromItemContainer(this)?.UpdateSelectionFromEvent(this, e);

4
src/Avalonia.Controls/NumericUpDown/NumericUpDown.cs

@ -440,14 +440,14 @@ namespace Avalonia.Controls
}
/// <inheritdoc />
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
base.OnGotFocus(e);
FocusChanged(IsKeyboardFocusWithin);
}
/// <inheritdoc />
protected override void OnLostFocus(RoutedEventArgs e)
protected override void OnLostFocus(FocusChangedEventArgs e)
{
CommitInput(true);
base.OnLostFocus(e);

2
src/Avalonia.Controls/Platform/DefaultMenuInteractionHandler.cs

@ -52,7 +52,7 @@ namespace Avalonia.Controls.Platform
public static TimeSpan MenuShowDelay { get; set;} = TimeSpan.FromMilliseconds(400);
protected internal virtual void GotFocus(object? sender, GotFocusEventArgs e)
protected internal virtual void GotFocus(object? sender, FocusChangedEventArgs e)
{
var item = GetMenuItemCore(e.Source as Control);

4
src/Avalonia.Controls/Primitives/SelectingItemsControl.cs

@ -896,12 +896,12 @@ namespace Avalonia.Controls.Primitives
{
case PointerEventArgs pointerEvent when ShouldTriggerSelection(container, pointerEvent):
case KeyEventArgs keyEvent when ShouldTriggerSelection(container, keyEvent):
case GotFocusEventArgs:
case FocusChangedEventArgs:
UpdateSelection(containerIndex, true,
ItemSelectionEventTriggers.HasRangeSelectionModifier(container, eventArgs),
ItemSelectionEventTriggers.HasToggleSelectionModifier(container, eventArgs),
eventArgs is PointerEventArgs { Properties.IsRightButtonPressed: true },
eventArgs is GotFocusEventArgs);
eventArgs is FocusChangedEventArgs);
eventArgs.Handled = true;
return true;

2
src/Avalonia.Controls/Primitives/TabStrip.cs

@ -32,7 +32,7 @@ namespace Avalonia.Controls.Primitives
public override bool UpdateSelectionFromEvent(Control container, RoutedEventArgs eventArgs)
{
if (eventArgs is GotFocusEventArgs { NavigationMethod: not NavigationMethod.Directional })
if (eventArgs is FocusChangedEventArgs { NavigationMethod: not NavigationMethod.Directional })
{
return false;
}

2
src/Avalonia.Controls/Primitives/TabStripItem.cs

@ -7,7 +7,7 @@ namespace Avalonia.Controls.Primitives
/// </summary>
public class TabStripItem : ListBoxItem
{
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
base.OnGotFocus(e);
UpdateSelectionFromEvent(e);

2
src/Avalonia.Controls/ScrollViewer.cs

@ -766,7 +766,7 @@ namespace Avalonia.Controls
}
}
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
base.OnGotFocus(e);

4
src/Avalonia.Controls/SelectableTextBlock.cs

@ -160,14 +160,14 @@ namespace Avalonia.Controls
SetCurrentValue(SelectionEndProperty, SelectionStart);
}
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
base.OnGotFocus(e);
UpdateCommandStates();
}
protected override void OnLostFocus(RoutedEventArgs e)
protected override void OnLostFocus(FocusChangedEventArgs e)
{
base.OnLostFocus(e);

2
src/Avalonia.Controls/TabControl.cs

@ -237,7 +237,7 @@ namespace Avalonia.Controls
public override bool UpdateSelectionFromEvent(Control container, RoutedEventArgs eventArgs)
{
if (eventArgs is GotFocusEventArgs { NavigationMethod: not NavigationMethod.Directional })
if (eventArgs is FocusChangedEventArgs { NavigationMethod: not NavigationMethod.Directional })
{
return false;
}

2
src/Avalonia.Controls/TabItem.cs

@ -111,7 +111,7 @@ namespace Avalonia.Controls
e.Handled = true;
}
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
base.OnGotFocus(e);
UpdateSelectionFromEvent(e);

4
src/Avalonia.Controls/TextBox.cs

@ -1088,7 +1088,7 @@ namespace Avalonia.Controls
CanPaste = !IsReadOnly;
}
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
base.OnGotFocus(e);
@ -1114,7 +1114,7 @@ namespace Avalonia.Controls
_presenter?.ShowCaret();
}
protected override void OnLostFocus(RoutedEventArgs e)
protected override void OnLostFocus(FocusChangedEventArgs e)
{
base.OnLostFocus(e);

2
src/Avalonia.Controls/TreeView.cs

@ -550,7 +550,7 @@ namespace Avalonia.Controls
}
/// <inheritdoc/>
protected override void OnGotFocus(GotFocusEventArgs e)
protected override void OnGotFocus(FocusChangedEventArgs e)
{
if (e.NavigationMethod == NavigationMethod.Directional)
{

4
tests/Avalonia.Controls.UnitTests/ListBoxTests_Single.cs

@ -35,7 +35,7 @@ namespace Avalonia.Controls.UnitTests
Prepare(target);
target.Presenter!.Panel!.Children[0].RaiseEvent(new GotFocusEventArgs
target.Presenter!.Panel!.Children[0].RaiseEvent(new FocusChangedEventArgs(InputElement.GotFocusEvent)
{
NavigationMethod = NavigationMethod.Tab,
});
@ -57,7 +57,7 @@ namespace Avalonia.Controls.UnitTests
AvaloniaLocator.CurrentMutable.Bind<PlatformHotkeyConfiguration>().ToConstant(new PlatformHotkeyConfiguration());
Prepare(target);
target.Presenter!.Panel!.Children[0].RaiseEvent(new GotFocusEventArgs
target.Presenter!.Panel!.Children[0].RaiseEvent(new FocusChangedEventArgs(InputElement.GotFocusEvent)
{
NavigationMethod = NavigationMethod.Directional,
KeyModifiers = KeyModifiers.Control

Loading…
Cancel
Save