mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
Refactored keydown/up/press events to use event vs. Action<T>
This commit is contained in:
@@ -90,8 +90,8 @@ static class Demo {
|
||||
Width = Dim.Fill (),
|
||||
Height = Dim.Fill ()
|
||||
};
|
||||
container.OnKeyUp += (KeyEvent ke) => {
|
||||
if (ke.Key == Key.Esc)
|
||||
container.KeyUp += (sender, e) => {
|
||||
if (e.KeyEvent.Key == Key.Esc)
|
||||
container.Running = false;
|
||||
};
|
||||
|
||||
@@ -469,9 +469,9 @@ static class Demo {
|
||||
}
|
||||
|
||||
|
||||
container.OnKeyDown += (KeyEvent keyEvent) => KeyDownPressUp (keyEvent, "Down");
|
||||
container.OnKeyPress += (KeyEvent keyEvent) => KeyDownPressUp (keyEvent, "Press");
|
||||
container.OnKeyUp += (KeyEvent keyEvent) => KeyDownPressUp (keyEvent, "Up");
|
||||
container.KeyDown += (o, e) => KeyDownPressUp (e.KeyEvent, "Down");
|
||||
container.KeyPress += (o, e) => KeyDownPressUp (e.KeyEvent, "Press");
|
||||
container.KeyUp += (o, e) => KeyDownPressUp (e.KeyEvent, "Up");
|
||||
Application.Run (container);
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -126,7 +126,7 @@ namespace Terminal.Gui {
|
||||
/// </summary>
|
||||
/// <param name="keyEvent">Contains the details about the key that produced the event.</param>
|
||||
/// <returns>true if the event was handled</returns>
|
||||
public virtual bool KeyDown (KeyEvent keyEvent)
|
||||
public virtual bool OnKeyDown (KeyEvent keyEvent)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -136,7 +136,7 @@ namespace Terminal.Gui {
|
||||
/// </summary>
|
||||
/// <param name="keyEvent">Contains the details about the key that produced the event.</param>
|
||||
/// <returns>true if the event was handled</returns>
|
||||
public virtual bool KeyUp (KeyEvent keyEvent)
|
||||
public virtual bool OnKeyUp (KeyEvent keyEvent)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -1065,15 +1065,20 @@ namespace Terminal.Gui {
|
||||
SuperView?.SetFocus(this);
|
||||
}
|
||||
|
||||
public class KeyEventEventArgs : EventArgs {
|
||||
public KeyEventEventArgs(KeyEvent ke) => KeyEvent = ke;
|
||||
public KeyEvent KeyEvent { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invoked when a character key is pressed and occurs after the key up event.
|
||||
/// </summary>
|
||||
public Action<KeyEvent> OnKeyPress;
|
||||
public event EventHandler<KeyEventEventArgs> KeyPress;
|
||||
|
||||
/// <inheritdoc cref="ProcessKey"/>
|
||||
public override bool ProcessKey (KeyEvent keyEvent)
|
||||
{
|
||||
OnKeyPress?.Invoke (keyEvent);
|
||||
KeyPress?.Invoke (this, new KeyEventEventArgs(keyEvent));
|
||||
if (Focused?.ProcessKey (keyEvent) == true)
|
||||
return true;
|
||||
|
||||
@@ -1083,6 +1088,7 @@ namespace Terminal.Gui {
|
||||
/// <inheritdoc cref="ProcessHotKey"/>
|
||||
public override bool ProcessHotKey (KeyEvent keyEvent)
|
||||
{
|
||||
KeyPress?.Invoke (this, new KeyEventEventArgs (keyEvent));
|
||||
if (subviews == null || subviews.Count == 0)
|
||||
return false;
|
||||
foreach (var view in subviews)
|
||||
@@ -1094,6 +1100,7 @@ namespace Terminal.Gui {
|
||||
/// <inheritdoc cref="ProcessColdKey"/>
|
||||
public override bool ProcessColdKey (KeyEvent keyEvent)
|
||||
{
|
||||
KeyPress?.Invoke (this, new KeyEventEventArgs(keyEvent));
|
||||
if (subviews == null || subviews.Count == 0)
|
||||
return false;
|
||||
foreach (var view in subviews)
|
||||
@@ -1105,16 +1112,16 @@ namespace Terminal.Gui {
|
||||
/// <summary>
|
||||
/// Invoked when a key is pressed
|
||||
/// </summary>
|
||||
public Action<KeyEvent> OnKeyDown;
|
||||
public event EventHandler<KeyEventEventArgs> KeyDown;
|
||||
|
||||
/// <inheritdoc cref="KeyDown"/>
|
||||
public override bool KeyDown (KeyEvent keyEvent)
|
||||
/// <param name="keyEvent">Contains the details about the key that produced the event.</param>
|
||||
public override bool OnKeyDown (KeyEvent keyEvent)
|
||||
{
|
||||
OnKeyDown?.Invoke (keyEvent);
|
||||
KeyDown?.Invoke (this, new KeyEventEventArgs (keyEvent));
|
||||
if (subviews == null || subviews.Count == 0)
|
||||
return false;
|
||||
foreach (var view in subviews)
|
||||
if (view.KeyDown (keyEvent))
|
||||
if (view.OnKeyDown (keyEvent))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
@@ -1123,16 +1130,16 @@ namespace Terminal.Gui {
|
||||
/// <summary>
|
||||
/// Invoked when a key is released
|
||||
/// </summary>
|
||||
public Action<KeyEvent> OnKeyUp;
|
||||
public event EventHandler<KeyEventEventArgs> KeyUp;
|
||||
|
||||
/// <inheritdoc cref="KeyUp"/>
|
||||
public override bool KeyUp (KeyEvent keyEvent)
|
||||
/// <param name="keyEvent">Contains the details about the key that produced the event.</param>
|
||||
public override bool OnKeyUp (KeyEvent keyEvent)
|
||||
{
|
||||
OnKeyUp?.Invoke (keyEvent);
|
||||
KeyUp?.Invoke (this, new KeyEventEventArgs (keyEvent));
|
||||
if (subviews == null || subviews.Count == 0)
|
||||
return false;
|
||||
foreach (var view in subviews)
|
||||
if (view.KeyUp (keyEvent))
|
||||
if (view.OnKeyUp (keyEvent))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
@@ -2165,7 +2172,7 @@ namespace Terminal.Gui {
|
||||
{
|
||||
var chain = toplevels.ToList ();
|
||||
foreach (var topLevel in chain) {
|
||||
if (topLevel.KeyDown (ke))
|
||||
if (topLevel.OnKeyDown (ke))
|
||||
return;
|
||||
if (topLevel.Modal)
|
||||
break;
|
||||
@@ -2177,7 +2184,7 @@ namespace Terminal.Gui {
|
||||
{
|
||||
var chain = toplevels.ToList ();
|
||||
foreach (var topLevel in chain) {
|
||||
if (topLevel.KeyUp (ke))
|
||||
if (topLevel.OnKeyUp (ke))
|
||||
return;
|
||||
if (topLevel.Modal)
|
||||
break;
|
||||
|
||||
@@ -347,7 +347,7 @@ namespace Terminal.Gui {
|
||||
});
|
||||
}
|
||||
|
||||
public override bool KeyDown (KeyEvent keyEvent)
|
||||
public override bool OnKeyDown (KeyEvent keyEvent)
|
||||
{
|
||||
if (keyEvent.IsAlt) {
|
||||
host.CloseAllMenus ();
|
||||
@@ -362,7 +362,7 @@ namespace Terminal.Gui {
|
||||
// To ncurses simulate a AltMask key pressing Alt+Space because
|
||||
// it can<61>t detect an alone special key down was pressed.
|
||||
if (keyEvent.IsAlt && keyEvent.Key == Key.AltMask) {
|
||||
KeyDown (keyEvent);
|
||||
OnKeyDown (keyEvent);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -580,7 +580,7 @@ namespace Terminal.Gui {
|
||||
/// </summary>
|
||||
/// <param name="keyEvent"></param>
|
||||
/// <returns></returns>
|
||||
public override bool KeyUp (KeyEvent keyEvent)
|
||||
public override bool OnKeyUp (KeyEvent keyEvent)
|
||||
{
|
||||
if (keyEvent.IsAlt) {
|
||||
// User pressed Alt - this may be a precursor to a menu accelerator (e.g. Alt-F)
|
||||
@@ -1003,8 +1003,8 @@ namespace Terminal.Gui {
|
||||
// To ncurses simulate a AltMask key pressing Alt+Space because
|
||||
// it can<61>t detect an alone special key down was pressed.
|
||||
if (kb.IsAlt && kb.Key == Key.AltMask && openMenu == null) {
|
||||
KeyDown (kb);
|
||||
KeyUp (kb);
|
||||
OnKeyDown (kb);
|
||||
OnKeyUp (kb);
|
||||
return true;
|
||||
} else if (kb.IsAlt) {
|
||||
if (FindAndOpenMenuByHotkey (kb)) return true;
|
||||
|
||||
Reference in New Issue
Block a user