123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- namespace Terminal.Gui.ViewTests;
- public class ViewCommandTests
- {
-
- // See https://github.com/gui-cs/Terminal.Gui/issues/3913
- [Fact]
- public void Button_IsDefault_Raises_Accepted_Correctly ()
- {
- int aAcceptedCount = 0;
- bool aCancelAccepting = false;
- int bAcceptedCount = 0;
- bool bCancelAccepting = false;
- var w = new Window ()
- {
- BorderStyle = LineStyle.None,
- Width = 10,
- Height = 10
- };
- var btnA = new Button ()
- {
- Width = 3,
- IsDefault = true
- };
- btnA.Accepting += (s, e) =>
- {
- aAcceptedCount++;
- e.Cancel = aCancelAccepting;
- };
- var btnB = new Button ()
- {
- Width = 3,
- X = Pos.Right (btnA)
- };
- btnB.Accepting += (s, e) =>
- {
- bAcceptedCount++;
- e.Cancel = bCancelAccepting;
- };
- w.Add (btnA, btnB);
- w.LayoutSubViews ();
- Application.Top = w;
- Application.TopLevels.Push(w);
- Assert.Same (Application.Top, w);
- // Click button 2
- var btn2Frame = btnB.FrameToScreen ();
- Application.RaiseMouseEvent (
- new MouseEventArgs ()
- {
- ScreenPosition = btn2Frame.Location,
- Flags = MouseFlags.Button1Clicked
- });
- // Button A should have been accepted because B didn't cancel and A IsDefault
- Assert.Equal (1, aAcceptedCount);
- Assert.Equal (1, bAcceptedCount);
- bCancelAccepting = true;
- Application.RaiseMouseEvent (
- new MouseEventArgs ()
- {
- ScreenPosition = btn2Frame.Location,
- Flags = MouseFlags.Button1Clicked
- });
- // Button A (IsDefault) should NOT have been accepted because B canceled
- Assert.Equal (1, aAcceptedCount);
- Assert.Equal (2, bAcceptedCount);
- Application.ResetState (true);
- }
- // See: https://github.com/gui-cs/Terminal.Gui/issues/3905
- [Fact]
- public void Button_CanFocus_False_Raises_Accepted_Correctly ()
- {
- int wAcceptedCount = 0;
- bool wCancelAccepting = false;
- var w = new Window ()
- {
- Title = "Window",
- BorderStyle = LineStyle.None,
- Width = 10,
- Height = 10
- };
- w.Accepting += (s, e) =>
- {
- wAcceptedCount++;
- e.Cancel = wCancelAccepting;
- };
- int btnAcceptedCount = 0;
- bool btnCancelAccepting = false;
- var btn = new Button ()
- {
- Title = "Button",
- Width = 3,
- IsDefault = true,
- };
- btn.CanFocus = true;
- btn.Accepting += (s, e) =>
- {
- btnAcceptedCount++;
- e.Cancel = btnCancelAccepting;
- };
- w.Add (btn);
- Application.Top = w;
- Application.TopLevels.Push (w);
- Assert.Same (Application.Top, w);
- w.LayoutSubViews ();
- // Click button just like a driver would
- var btnFrame = btn.FrameToScreen ();
- Application.RaiseMouseEvent (
- new MouseEventArgs ()
- {
- ScreenPosition = btnFrame.Location,
- Flags = MouseFlags.Button1Pressed
- });
- Application.RaiseMouseEvent (
- new MouseEventArgs ()
- {
- ScreenPosition = btnFrame.Location,
- Flags = MouseFlags.Button1Released
- });
- Application.RaiseMouseEvent (
- new MouseEventArgs ()
- {
- ScreenPosition = btnFrame.Location,
- Flags = MouseFlags.Button1Clicked
- });
- Assert.Equal (1, btnAcceptedCount);
- Assert.Equal (2, wAcceptedCount);
- Application.ResetState (true);
- }
- }
|