mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
Test for TabClicked event
This commit is contained in:
@@ -760,6 +760,87 @@ namespace Terminal.Gui.ViewTests {
|
||||
└──────────────┘ ", output);
|
||||
}
|
||||
|
||||
[Fact, AutoInitShutdown]
|
||||
public void MouseClick_ChangesTab ()
|
||||
{
|
||||
var tv = GetTabView (out var tab1, out var tab2, false);
|
||||
|
||||
tv.Width = 20;
|
||||
tv.Height = 5;
|
||||
|
||||
tv.LayoutSubviews ();
|
||||
|
||||
tv.Redraw (tv.Bounds);
|
||||
|
||||
var tabRow = tv.Subviews[0];
|
||||
Assert.Equal("TabRowView",tabRow.GetType().Name);
|
||||
|
||||
TestHelpers.AssertDriverContentsAre (@"
|
||||
┌────┐
|
||||
│Tab1│Tab2
|
||||
│ └─────────────┐
|
||||
│hi │
|
||||
└──────────────────┘
|
||||
", output);
|
||||
|
||||
TabView.Tab clicked = null;
|
||||
|
||||
|
||||
tv.TabClicked += (s,e)=>{
|
||||
clicked = e.Tab;
|
||||
};
|
||||
|
||||
// Waving mouse around does not trigger click
|
||||
for(int i=0;i<100;i++)
|
||||
{
|
||||
tabRow.MouseEvent(new MouseEvent{
|
||||
X = i,
|
||||
Y = 1,
|
||||
Flags = MouseFlags.ReportMousePosition
|
||||
});
|
||||
|
||||
Assert.Null(clicked);
|
||||
Assert.Equal(tab1, tv.SelectedTab);
|
||||
}
|
||||
|
||||
tabRow.MouseEvent(new MouseEvent{
|
||||
X = 3,
|
||||
Y = 1,
|
||||
Flags = MouseFlags.Button1Clicked
|
||||
});
|
||||
|
||||
Assert.Equal(tab1, clicked);
|
||||
Assert.Equal(tab1, tv.SelectedTab);
|
||||
|
||||
|
||||
// Click to tab2
|
||||
tabRow.MouseEvent(new MouseEvent{
|
||||
X = 7,
|
||||
Y = 1,
|
||||
Flags = MouseFlags.Button1Clicked
|
||||
});
|
||||
|
||||
Assert.Equal(tab2, clicked);
|
||||
Assert.Equal(tab2, tv.SelectedTab);
|
||||
|
||||
// cancel navigation
|
||||
tv.TabClicked += (s,e)=>{
|
||||
clicked = e.Tab;
|
||||
e.MouseEvent.Handled = true;
|
||||
};
|
||||
|
||||
tabRow.MouseEvent(new MouseEvent{
|
||||
X = 3,
|
||||
Y = 1,
|
||||
Flags = MouseFlags.Button1Clicked
|
||||
});
|
||||
|
||||
// Tab 1 was clicked but event handler blocked navigation
|
||||
Assert.Equal(tab1, clicked);
|
||||
Assert.Equal(tab2, tv.SelectedTab);
|
||||
|
||||
}
|
||||
|
||||
private void InitFakeDriver ()
|
||||
{
|
||||
var driver = new FakeDriver ();
|
||||
|
||||
Reference in New Issue
Block a user