|
@@ -3910,5 +3910,135 @@ This is a tes
|
|
Assert.True (viewCalled);
|
|
Assert.True (viewCalled);
|
|
Assert.True (tvCalled);
|
|
Assert.True (tvCalled);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ [Fact, AutoInitShutdown]
|
|
|
|
+ public void KeyDown_And_KeyUp_Events_Must_Called_Before_OnKeyDown_And_OnKeyUp ()
|
|
|
|
+ {
|
|
|
|
+ var keyDown = false;
|
|
|
|
+ var keyPress = false;
|
|
|
|
+ var keyUp = false;
|
|
|
|
+
|
|
|
|
+ var view = new DerivedView ();
|
|
|
|
+ view.KeyDown += (e) => {
|
|
|
|
+ Assert.Equal (Key.a, e.KeyEvent.Key);
|
|
|
|
+ Assert.False (keyDown);
|
|
|
|
+ Assert.False (view.IsKeyDown);
|
|
|
|
+ e.Handled = true;
|
|
|
|
+ keyDown = true;
|
|
|
|
+ };
|
|
|
|
+ view.KeyPress += (e) => {
|
|
|
|
+ Assert.Equal (Key.a, e.KeyEvent.Key);
|
|
|
|
+ Assert.False (keyPress);
|
|
|
|
+ Assert.False (view.IsKeyPress);
|
|
|
|
+ e.Handled = true;
|
|
|
|
+ keyPress = true;
|
|
|
|
+ };
|
|
|
|
+ view.KeyUp += (e) => {
|
|
|
|
+ Assert.Equal (Key.a, e.KeyEvent.Key);
|
|
|
|
+ Assert.False (keyUp);
|
|
|
|
+ Assert.False (view.IsKeyUp);
|
|
|
|
+ e.Handled = true;
|
|
|
|
+ keyUp = true;
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ Application.Top.Add (view);
|
|
|
|
+
|
|
|
|
+ Console.MockKeyPresses.Push (new ConsoleKeyInfo ('a', ConsoleKey.A, false, false, false));
|
|
|
|
+
|
|
|
|
+ Application.Iteration += () => Application.RequestStop ();
|
|
|
|
+
|
|
|
|
+ Assert.True (view.CanFocus);
|
|
|
|
+
|
|
|
|
+ Application.Run ();
|
|
|
|
+ Application.Shutdown ();
|
|
|
|
+
|
|
|
|
+ Assert.True (keyDown);
|
|
|
|
+ Assert.True (keyPress);
|
|
|
|
+ Assert.True (keyUp);
|
|
|
|
+ Assert.False (view.IsKeyDown);
|
|
|
|
+ Assert.False (view.IsKeyPress);
|
|
|
|
+ Assert.False (view.IsKeyUp);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public class DerivedView : View {
|
|
|
|
+ public DerivedView ()
|
|
|
|
+ {
|
|
|
|
+ CanFocus = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public bool IsKeyDown { get; set; }
|
|
|
|
+ public bool IsKeyPress { get; set; }
|
|
|
|
+ public bool IsKeyUp { get; set; }
|
|
|
|
+
|
|
|
|
+ public override bool OnKeyDown (KeyEvent keyEvent)
|
|
|
|
+ {
|
|
|
|
+ IsKeyDown = true;
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public override bool ProcessKey (KeyEvent keyEvent)
|
|
|
|
+ {
|
|
|
|
+ IsKeyPress = true;
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public override bool OnKeyUp (KeyEvent keyEvent)
|
|
|
|
+ {
|
|
|
|
+ IsKeyUp = true;
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [Theory, AutoInitShutdown]
|
|
|
|
+ [InlineData (true, false, false)]
|
|
|
|
+ [InlineData (true, true, false)]
|
|
|
|
+ [InlineData (true, true, true)]
|
|
|
|
+ public void KeyDown_And_KeyUp_Events_With_Only_Key_Modifiers (bool shift, bool alt, bool control)
|
|
|
|
+ {
|
|
|
|
+ var keyDown = false;
|
|
|
|
+ var keyPress = false;
|
|
|
|
+ var keyUp = false;
|
|
|
|
+
|
|
|
|
+ var view = new DerivedView ();
|
|
|
|
+ view.KeyDown += (e) => {
|
|
|
|
+ Assert.Equal (-1, e.KeyEvent.KeyValue);
|
|
|
|
+ Assert.Equal (shift, e.KeyEvent.IsShift);
|
|
|
|
+ Assert.Equal (alt, e.KeyEvent.IsAlt);
|
|
|
|
+ Assert.Equal (control, e.KeyEvent.IsCtrl);
|
|
|
|
+ Assert.False (keyDown);
|
|
|
|
+ Assert.False (view.IsKeyDown);
|
|
|
|
+ keyDown = true;
|
|
|
|
+ };
|
|
|
|
+ view.KeyPress += (e) => {
|
|
|
|
+ keyPress = true;
|
|
|
|
+ };
|
|
|
|
+ view.KeyUp += (e) => {
|
|
|
|
+ Assert.Equal (-1, e.KeyEvent.KeyValue);
|
|
|
|
+ Assert.Equal (shift, e.KeyEvent.IsShift);
|
|
|
|
+ Assert.Equal (alt, e.KeyEvent.IsAlt);
|
|
|
|
+ Assert.Equal (control, e.KeyEvent.IsCtrl);
|
|
|
|
+ Assert.False (keyUp);
|
|
|
|
+ Assert.False (view.IsKeyUp);
|
|
|
|
+ keyUp = true;
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ Application.Top.Add (view);
|
|
|
|
+
|
|
|
|
+ Console.MockKeyPresses.Push (new ConsoleKeyInfo ('\0', (ConsoleKey)'\0', shift, alt, control));
|
|
|
|
+
|
|
|
|
+ Application.Iteration += () => Application.RequestStop ();
|
|
|
|
+
|
|
|
|
+ Assert.True (view.CanFocus);
|
|
|
|
+
|
|
|
|
+ Application.Run ();
|
|
|
|
+ Application.Shutdown ();
|
|
|
|
+
|
|
|
|
+ Assert.True (keyDown);
|
|
|
|
+ Assert.False (keyPress);
|
|
|
|
+ Assert.True (keyUp);
|
|
|
|
+ Assert.True (view.IsKeyDown);
|
|
|
|
+ Assert.False (view.IsKeyPress);
|
|
|
|
+ Assert.True (view.IsKeyUp);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|