mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2026-01-02 01:03:29 +01:00
Fixes #808. Added an automated CanFocus.
This commit is contained in:
@@ -747,5 +747,157 @@ namespace Terminal.Gui {
|
||||
Assert.False (f.CanFocus);
|
||||
Assert.True (v.CanFocus);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CanFocus_Faced_With_Container_Before_Run ()
|
||||
{
|
||||
Application.Init (new FakeDriver (), new NetMainLoop (() => FakeConsole.ReadKey (true)));
|
||||
|
||||
var t = Application.Top;
|
||||
|
||||
var w = new Window ("w");
|
||||
var f = new FrameView ("f");
|
||||
var v = new View ("v") { CanFocus = true };
|
||||
f.Add (v);
|
||||
w.Add (f);
|
||||
t.Add (w);
|
||||
|
||||
Assert.True (t.CanFocus);
|
||||
Assert.True (w.CanFocus);
|
||||
Assert.True (f.CanFocus);
|
||||
Assert.True (v.CanFocus);
|
||||
|
||||
f.CanFocus = false;
|
||||
Assert.False (f.CanFocus);
|
||||
Assert.True (v.CanFocus);
|
||||
|
||||
v.CanFocus = false;
|
||||
Assert.False (f.CanFocus);
|
||||
Assert.False (v.CanFocus);
|
||||
|
||||
v.CanFocus = true;
|
||||
Assert.False (f.CanFocus);
|
||||
Assert.True (v.CanFocus);
|
||||
|
||||
Application.Iteration += () => Application.RequestStop ();
|
||||
|
||||
Application.Run ();
|
||||
Application.Shutdown ();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CanFocus_Faced_With_Container_After_Run ()
|
||||
{
|
||||
Application.Init (new FakeDriver (), new NetMainLoop (() => FakeConsole.ReadKey (true)));
|
||||
|
||||
var t = Application.Top;
|
||||
|
||||
var w = new Window ("w");
|
||||
var f = new FrameView ("f");
|
||||
var v = new View ("v") { CanFocus = true };
|
||||
f.Add (v);
|
||||
w.Add (f);
|
||||
t.Add (w);
|
||||
|
||||
t.Ready += () => {
|
||||
Assert.True (t.CanFocus);
|
||||
Assert.True (w.CanFocus);
|
||||
Assert.True (f.CanFocus);
|
||||
Assert.True (v.CanFocus);
|
||||
|
||||
f.CanFocus = false;
|
||||
Assert.False (f.CanFocus);
|
||||
Assert.False (v.CanFocus);
|
||||
|
||||
v.CanFocus = false;
|
||||
Assert.False (f.CanFocus);
|
||||
Assert.False (v.CanFocus);
|
||||
|
||||
v.CanFocus = true;
|
||||
Assert.True (f.CanFocus);
|
||||
Assert.True (v.CanFocus);
|
||||
};
|
||||
|
||||
Application.Iteration += () => Application.RequestStop ();
|
||||
|
||||
Application.Run ();
|
||||
Application.Shutdown ();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CanFocus_Container_ToFalse_Turns_All_Subviews_ToFalse_Too ()
|
||||
{
|
||||
Application.Init (new FakeDriver (), new NetMainLoop (() => FakeConsole.ReadKey (true)));
|
||||
|
||||
var t = Application.Top;
|
||||
|
||||
var w = new Window ("w");
|
||||
var f = new FrameView ("f");
|
||||
var v1 = new View ("v1") { CanFocus = true };
|
||||
var v2 = new View ("v2") { CanFocus = true };
|
||||
f.Add (v1, v2);
|
||||
w.Add (f);
|
||||
t.Add (w);
|
||||
|
||||
t.Ready += () => {
|
||||
Assert.True (t.CanFocus);
|
||||
Assert.True (w.CanFocus);
|
||||
Assert.True (f.CanFocus);
|
||||
Assert.True (v1.CanFocus);
|
||||
Assert.True (v2.CanFocus);
|
||||
|
||||
w.CanFocus = false;
|
||||
Assert.True (w.CanFocus);
|
||||
Assert.False (f.CanFocus);
|
||||
Assert.False (v1.CanFocus);
|
||||
Assert.False (v2.CanFocus);
|
||||
};
|
||||
|
||||
Application.Iteration += () => Application.RequestStop ();
|
||||
|
||||
Application.Run ();
|
||||
Application.Shutdown ();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CanFocus_Container_Toggling_All_Subviews_To_Old_Value_When_Is_True ()
|
||||
{
|
||||
Application.Init (new FakeDriver (), new NetMainLoop (() => FakeConsole.ReadKey (true)));
|
||||
|
||||
var t = Application.Top;
|
||||
|
||||
var w = new Window ("w");
|
||||
var f = new FrameView ("f");
|
||||
var v1 = new View ("v1");
|
||||
var v2 = new View ("v2") { CanFocus = true };
|
||||
f.Add (v1, v2);
|
||||
w.Add (f);
|
||||
t.Add (w);
|
||||
|
||||
t.Ready += () => {
|
||||
Assert.True (t.CanFocus);
|
||||
Assert.True (w.CanFocus);
|
||||
Assert.True (f.CanFocus);
|
||||
Assert.False (v1.CanFocus);
|
||||
Assert.True (v2.CanFocus);
|
||||
|
||||
w.CanFocus = false;
|
||||
Assert.True (w.CanFocus);
|
||||
Assert.False (f.CanFocus);
|
||||
Assert.False (v1.CanFocus);
|
||||
Assert.False (v2.CanFocus);
|
||||
|
||||
w.CanFocus = true;
|
||||
Assert.True (w.CanFocus);
|
||||
Assert.True (f.CanFocus);
|
||||
Assert.False (v1.CanFocus);
|
||||
Assert.True (v2.CanFocus);
|
||||
};
|
||||
|
||||
Application.Iteration += () => Application.RequestStop ();
|
||||
|
||||
Application.Run ();
|
||||
Application.Shutdown ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user