mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
Make OnTabClicked fire for clicks in empty space and fix Notepad to only show context menu on right click.
This commit is contained in:
@@ -679,7 +679,7 @@ namespace Terminal.Gui {
|
||||
me.Flags.HasFlag (MouseFlags.Button2Clicked) ||
|
||||
me.Flags.HasFlag (MouseFlags.Button3Clicked);
|
||||
|
||||
if (hit != null && isClick) {
|
||||
if (isClick) {
|
||||
host.OnTabClicked (new TabMouseEventArgs (hit, me));
|
||||
|
||||
// user canceled click
|
||||
@@ -777,9 +777,11 @@ namespace Terminal.Gui {
|
||||
public class TabMouseEventArgs : EventArgs {
|
||||
|
||||
/// <summary>
|
||||
/// Gets the <see cref="TabView.Tab"/> that the mouse was over when the <see cref="MouseEvent"/>
|
||||
/// occurred.
|
||||
/// Gets the <see cref="TabView.Tab"/> (if any) that the mouse
|
||||
/// was over when the <see cref="MouseEvent"/> occurred.
|
||||
/// </summary>
|
||||
/// <remarks>This will be null if the click is after last tab
|
||||
/// or before first.</remarks>
|
||||
public Tab Tab { get; }
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -67,12 +67,27 @@ namespace UICatalog.Scenarios {
|
||||
|
||||
private void TabView_TabClicked (object sender, TabView.TabMouseEventArgs e)
|
||||
{
|
||||
var contextMenu = new ContextMenu (e.MouseEvent.X + 1, e.MouseEvent.Y + 1,
|
||||
new MenuBarItem (new MenuItem [] {
|
||||
// we are only interested in right clicks
|
||||
if(!e.MouseEvent.Flags.HasFlag(MouseFlags.Button3Clicked)) {
|
||||
return;
|
||||
}
|
||||
|
||||
MenuBarItem items;
|
||||
|
||||
if (e.Tab == null) {
|
||||
items = new MenuBarItem (new MenuItem [] {
|
||||
new MenuItem ($"Open", "", () => Open()),
|
||||
});
|
||||
|
||||
} else {
|
||||
items = new MenuBarItem (new MenuItem [] {
|
||||
new MenuItem ($"Save", "", () => Save(e.Tab)),
|
||||
new MenuItem ($"Close", "", () => Close(e.Tab)),
|
||||
})
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
var contextMenu = new ContextMenu (e.MouseEvent.X + 1, e.MouseEvent.Y + 1, items);
|
||||
|
||||
contextMenu.Show ();
|
||||
e.MouseEvent.Handled = true;
|
||||
@@ -175,11 +190,11 @@ namespace UICatalog.Scenarios {
|
||||
};
|
||||
}
|
||||
|
||||
public void Save()
|
||||
public void Save ()
|
||||
{
|
||||
Save (tabView.SelectedTab);
|
||||
}
|
||||
public void Save (TabView.Tab tabToSave )
|
||||
public void Save (TabView.Tab tabToSave)
|
||||
{
|
||||
var tab = tabToSave as OpenedFile;
|
||||
|
||||
|
||||
@@ -839,6 +839,17 @@ namespace Terminal.Gui.ViewTests {
|
||||
Assert.Equal(tab1, clicked);
|
||||
Assert.Equal(tab2, tv.SelectedTab);
|
||||
|
||||
|
||||
tabRow.MouseEvent (new MouseEvent {
|
||||
X = 10,
|
||||
Y = 1,
|
||||
Flags = MouseFlags.Button1Clicked
|
||||
});
|
||||
|
||||
// Clicking beyond last tab should raise event with null Tab
|
||||
Assert.Null (clicked);
|
||||
Assert.Equal (tab2, tv.SelectedTab);
|
||||
|
||||
}
|
||||
|
||||
private void InitFakeDriver ()
|
||||
|
||||
Reference in New Issue
Block a user