Browse Source

Reverted HotkeyManager.cs

Changed Button.cs to remove it's HotKey property when detaching from visual tree
pull/4823/head
Adir 6 years ago
parent
commit
ecba5f65f0
  1. 12
      src/Avalonia.Controls/Button.cs
  2. 14
      src/Avalonia.Controls/HotkeyManager.cs

12
src/Avalonia.Controls/Button.cs

@ -80,6 +80,7 @@ namespace Avalonia.Controls
private ICommand _command;
private bool _commandCanExecute = true;
private KeyGesture _hotkey;
/// <summary>
/// Initializes static members of the <see cref="Button"/> class.
@ -168,11 +169,13 @@ namespace Avalonia.Controls
private set { SetValue(IsPressedProperty, value); }
}
protected override bool IsEnabledCore => base.IsEnabledCore && _commandCanExecute;
protected override bool IsEnabledCore => base.IsEnabledCore && _commandCanExecute;
/// <inheritdoc/>
protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
{
if (_hotkey != null)
HotKey = _hotkey;
base.OnAttachedToVisualTree(e);
if (IsDefault)
@ -182,6 +185,7 @@ namespace Avalonia.Controls
ListenForDefault(inputElement);
}
}
if (IsCancel)
{
if (e.Root is IInputElement inputElement)
@ -194,6 +198,8 @@ namespace Avalonia.Controls
/// <inheritdoc/>
protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e)
{
_hotkey = HotKey;
HotKey = null;
base.OnDetachedFromVisualTree(e);
if (IsDefault)
@ -239,6 +245,7 @@ namespace Avalonia.Controls
{
OnClick();
}
IsPressed = true;
e.Handled = true;
}
@ -255,6 +262,7 @@ namespace Avalonia.Controls
{
OnClick();
}
IsPressed = false;
e.Handled = true;
}
@ -309,7 +317,7 @@ namespace Avalonia.Controls
}
}
}
protected override void OnPointerCaptureLost(PointerCaptureLostEventArgs e)
{
IsPressed = false;

14
src/Avalonia.Controls/HotkeyManager.cs

@ -2,7 +2,6 @@ using System;
using System.Windows.Input;
using Avalonia.Controls.Utils;
using Avalonia.Input;
using Avalonia.LogicalTree;
namespace Avalonia.Controls
{
@ -46,8 +45,6 @@ namespace Avalonia.Controls
{
_control = control;
_wrapper = new HotkeyCommandWrapper(_control);
_control.DetachedFromVisualTree += ControlOnDetachedFromVisualTree;
_control.AttachedToLogicalTree += ControlOnAttachedToLogicalTree;
}
public void Init()
@ -56,17 +53,6 @@ namespace Avalonia.Controls
_parentSub = AncestorFinder.Create<TopLevel>(_control).Subscribe(OnParentChanged);
}
private void ControlOnAttachedToLogicalTree(object sender, LogicalTreeAttachmentEventArgs e)
{
Stop();
Init();
}
private void ControlOnDetachedFromVisualTree(object sender, VisualTreeAttachmentEventArgs e)
{
Stop();
}
private void OnParentChanged(TopLevel control)
{
Unregister();

Loading…
Cancel
Save