| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- namespace UnitTests.ViewBaseTests;
- public class ViewCommandTests
- {
- // See https://github.com/gui-cs/Terminal.Gui/issues/3913
- [Fact]
- public void Button_IsDefault_Raises_Accepted_Correctly ()
- {
- var aAcceptedCount = 0;
- var aCancelAccepting = false;
- var bAcceptedCount = 0;
- var 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.Handled = aCancelAccepting;
- };
- var btnB = new Button
- {
- Width = 3,
- X = Pos.Right (btnA)
- };
- btnB.Accepting += (s, e) =>
- {
- bAcceptedCount++;
- e.Handled = bCancelAccepting;
- };
- w.Add (btnA, btnB);
- w.LayoutSubViews ();
- Application.Begin (w);
- Assert.Same (Application.TopRunnableView, w);
- // Click button 2
- Rectangle btn2Frame = btnB.FrameToScreen ();
- Application.RaiseMouseEvent (
- new()
- {
- 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()
- {
- 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]
- [SetupFakeApplication]
- public void Button_CanFocus_False_Raises_Accepted_Correctly ()
- {
- var wAcceptedCount = 0;
- var wCancelAccepting = false;
- var w = new Window
- {
- Title = "Window",
- BorderStyle = LineStyle.None,
- Width = 10,
- Height = 10
- };
- w.Accepting += (s, e) =>
- {
- wAcceptedCount++;
- e.Handled = wCancelAccepting;
- };
- var btnAcceptedCount = 0;
- var btnCancelAccepting = true;
- var btn = new Button
- {
- Title = "Button",
- Width = 3,
- IsDefault = true
- };
- btn.CanFocus = true;
- btn.Accepting += (s, e) =>
- {
- btnAcceptedCount++;
- e.Handled = btnCancelAccepting;
- };
- w.Add (btn);
- Application.Begin (w);
- Assert.Same (Application.TopRunnableView, w);
- w.LayoutSubViews ();
- // Click button just like a driver would
- Rectangle btnFrame = btn.FrameToScreen ();
- Application.RaiseMouseEvent (
- new()
- {
- ScreenPosition = btnFrame.Location,
- Flags = MouseFlags.Button1Pressed
- });
- Application.RaiseMouseEvent (
- new()
- {
- ScreenPosition = btnFrame.Location,
- Flags = MouseFlags.Button1Released
- });
- Application.RaiseMouseEvent (
- new()
- {
- ScreenPosition = btnFrame.Location,
- Flags = MouseFlags.Button1Clicked
- });
- Assert.Equal (1, btnAcceptedCount);
- Assert.Equal (0, wAcceptedCount);
- // The above grabbed the mouse. Need to ungrab.
- Application.Mouse.UngrabMouse ();
- w.Dispose ();
- Application.ResetState (true);
- }
- }
|