Browse Source

Refactor 'AlternateKey' events in Toplevel to use new signature

tznind 2 years ago
parent
commit
5187310b9a

+ 8 - 8
Terminal.Gui/Core/Application.cs

@@ -162,15 +162,15 @@ namespace Terminal.Gui {
 				if (alternateForwardKey != value) {
 					var oldKey = alternateForwardKey;
 					alternateForwardKey = value;
-					OnAlternateForwardKeyChanged (oldKey);
+					OnAlternateForwardKeyChanged (new KeyChangedEventArgs(oldKey,value));
 				}
 			}
 		}
 
-		static void OnAlternateForwardKeyChanged (Key oldKey)
+		static void OnAlternateForwardKeyChanged (KeyChangedEventArgs e)
 		{
 			foreach (var top in toplevels.ToArray ()) {
-				top.OnAlternateForwardKeyChanged (oldKey);
+				top.OnAlternateForwardKeyChanged (e);
 			}
 		}
 
@@ -186,12 +186,12 @@ namespace Terminal.Gui {
 				if (alternateBackwardKey != value) {
 					var oldKey = alternateBackwardKey;
 					alternateBackwardKey = value;
-					OnAlternateBackwardKeyChanged (oldKey);
+					OnAlternateBackwardKeyChanged (new KeyChangedEventArgs(oldKey,value));
 				}
 			}
 		}
 
-		static void OnAlternateBackwardKeyChanged (Key oldKey)
+		static void OnAlternateBackwardKeyChanged (KeyChangedEventArgs oldKey)
 		{
 			foreach (var top in toplevels.ToArray ()) {
 				top.OnAlternateBackwardKeyChanged (oldKey);
@@ -210,7 +210,7 @@ namespace Terminal.Gui {
 				if (quitKey != value) {
 					var oldKey = quitKey;
 					quitKey = value;
-					OnQuitKeyChanged (oldKey);
+					OnQuitKeyChanged (new KeyChangedEventArgs(oldKey,value));
 				}
 			}
 		}
@@ -222,11 +222,11 @@ namespace Terminal.Gui {
 		/// </summary>
 		public static List<CultureInfo> SupportedCultures => supportedCultures;
 
-		static void OnQuitKeyChanged (Key oldKey)
+		static void OnQuitKeyChanged (KeyChangedEventArgs e)
 		{
 			// Duplicate the list so if it changes during enumeration we're safe
 			foreach (var top in toplevels.ToArray ()) {
-				top.OnQuitKeyChanged (oldKey);
+				top.OnQuitKeyChanged (e);
 			}
 		}
 

+ 15 - 15
Terminal.Gui/Core/Toplevel.cs

@@ -259,46 +259,46 @@ namespace Terminal.Gui {
 		/// <summary>
 		/// Invoked when the <see cref="Application.AlternateForwardKey"/> is changed.
 		/// </summary>
-		public event Action<Key> AlternateForwardKeyChanged;
+		public event EventHandler<KeyChangedEventArgs> AlternateForwardKeyChanged;
 
 		/// <summary>
 		/// Virtual method to invoke the <see cref="AlternateForwardKeyChanged"/> event.
 		/// </summary>
-		/// <param name="oldKey"></param>
-		public virtual void OnAlternateForwardKeyChanged (Key oldKey)
+		/// <param name="e"></param>
+		public virtual void OnAlternateForwardKeyChanged (KeyChangedEventArgs e)
 		{
-			ReplaceKeyBinding (oldKey, Application.AlternateForwardKey);
-			AlternateForwardKeyChanged?.Invoke (oldKey);
+			ReplaceKeyBinding (e.OldKey, e.NewKey);
+			AlternateForwardKeyChanged?.Invoke (this, e);
 		}
 
 		/// <summary>
 		/// Invoked when the <see cref="Application.AlternateBackwardKey"/> is changed.
 		/// </summary>
-		public event Action<Key> AlternateBackwardKeyChanged;
+		public event EventHandler<KeyChangedEventArgs> AlternateBackwardKeyChanged;
 
 		/// <summary>
 		/// Virtual method to invoke the <see cref="AlternateBackwardKeyChanged"/> event.
 		/// </summary>
-		/// <param name="oldKey"></param>
-		public virtual void OnAlternateBackwardKeyChanged (Key oldKey)
+		/// <param name="e"></param>
+		public virtual void OnAlternateBackwardKeyChanged (KeyChangedEventArgs e)
 		{
-			ReplaceKeyBinding (oldKey, Application.AlternateBackwardKey);
-			AlternateBackwardKeyChanged?.Invoke (oldKey);
+			ReplaceKeyBinding (e.OldKey, e.NewKey);
+			AlternateBackwardKeyChanged?.Invoke (this, e);
 		}
 
 		/// <summary>
 		/// Invoked when the <see cref="Application.QuitKey"/> is changed.
 		/// </summary>
-		public event Action<Key> QuitKeyChanged;
+		public event EventHandler<KeyChangedEventArgs> QuitKeyChanged;
 
 		/// <summary>
 		/// Virtual method to invoke the <see cref="QuitKeyChanged"/> event.
 		/// </summary>
-		/// <param name="oldKey"></param>
-		public virtual void OnQuitKeyChanged (Key oldKey)
+		/// <param name="e"></param>
+		public virtual void OnQuitKeyChanged (KeyChangedEventArgs e)
 		{
-			ReplaceKeyBinding (oldKey, Application.QuitKey);
-			QuitKeyChanged?.Invoke (oldKey);
+			ReplaceKeyBinding (e.OldKey, e.NewKey);
+			QuitKeyChanged?.Invoke (this, e);
 		}
 
 		/// <summary>

+ 4 - 4
Terminal.Gui/Views/TextView.cs

@@ -1446,14 +1446,14 @@ namespace Terminal.Gui {
 			OnContentsChanged ();
 		}
 
-		void Top_AlternateBackwardKeyChanged (Key obj)
+		void Top_AlternateBackwardKeyChanged (object sender, KeyChangedEventArgs e)
 		{
-			ReplaceKeyBinding (obj, Application.AlternateBackwardKey);
+			ReplaceKeyBinding (e.OldKey, e.NewKey);
 		}
 
-		void Top_AlternateForwardKeyChanged (Key obj)
+		void Top_AlternateForwardKeyChanged (object sender, KeyChangedEventArgs e)
 		{
-			ReplaceKeyBinding (obj, Application.AlternateForwardKey);
+			ReplaceKeyBinding (e.OldKey, e.NewKey);
 		}
 
 		/// <summary>

+ 6 - 6
UnitTests/TopLevels/ToplevelTests.cs

@@ -589,9 +589,9 @@ namespace Terminal.Gui.TopLevelTests {
 
 			void View_Added (View obj)
 			{
-				Assert.Throws<NullReferenceException> (() => Application.Top.AlternateForwardKeyChanged += (e) => alternateForwardKey = e);
-				Assert.Throws<NullReferenceException> (() => Application.Top.AlternateBackwardKeyChanged += (e) => alternateBackwardKey = e);
-				Assert.Throws<NullReferenceException> (() => Application.Top.QuitKeyChanged += (e) => quitKey = e);
+				Assert.Throws<NullReferenceException> (() => Application.Top.AlternateForwardKeyChanged += (s,e) => alternateForwardKey = e.OldKey);
+				Assert.Throws<NullReferenceException> (() => Application.Top.AlternateBackwardKeyChanged += (s,e) => alternateBackwardKey = e.OldKey);
+				Assert.Throws<NullReferenceException> (() => Application.Top.QuitKeyChanged += (s,e) => quitKey = e.OldKey);
 				Assert.False (wasAdded);
 				wasAdded = true;
 				view.Added -= View_Added;
@@ -621,9 +621,9 @@ namespace Terminal.Gui.TopLevelTests {
 
 			void View_Initialized (object sender, EventArgs e)
 			{
-				Application.Top.AlternateForwardKeyChanged += (e) => alternateForwardKey = e;
-				Application.Top.AlternateBackwardKeyChanged += (e) => alternateBackwardKey = e;
-				Application.Top.QuitKeyChanged += (e) => quitKey = e;
+				Application.Top.AlternateForwardKeyChanged += (s,e) => alternateForwardKey = e.OldKey;
+				Application.Top.AlternateBackwardKeyChanged += (s, e) => alternateBackwardKey = e.OldKey;
+				Application.Top.QuitKeyChanged += (s, e) => quitKey = e.OldKey;
 			}
 
 			var win = new Window ();