mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2026-01-02 01:03:29 +01:00
Added MenuOpenedEventArgs class
This commit is contained in:
36
Terminal.Gui/Core/EventArgs/MenuOpenedEventArgs.cs
Normal file
36
Terminal.Gui/Core/EventArgs/MenuOpenedEventArgs.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Terminal.Gui {
|
||||
|
||||
/// <summary>
|
||||
/// Defines arguments for the <see cref="MenuBar.MenuOpened"/> event
|
||||
/// </summary>
|
||||
public class MenuOpenedEventArgs : EventArgs{
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new instance of the <see cref="MenuOpenedEventArgs"/> class
|
||||
/// </summary>
|
||||
/// <param name="parent"></param>
|
||||
/// <param name="menuItem"></param>
|
||||
public MenuOpenedEventArgs (MenuBarItem parent, MenuItem menuItem)
|
||||
{
|
||||
Parent = parent;
|
||||
MenuItem = menuItem;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The parent of <see cref="MenuItem"/>. Will be null if menu opening
|
||||
/// is the root (see <see cref="MenuBarItem.IsTopLevel"/>).
|
||||
/// </summary>
|
||||
public MenuBarItem Parent { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the <see cref="MenuItem"/> being opened.
|
||||
/// </summary>
|
||||
public MenuItem MenuItem { get; }
|
||||
}
|
||||
}
|
||||
@@ -1201,7 +1201,7 @@ namespace Terminal.Gui {
|
||||
/// <summary>
|
||||
/// Raised when a menu is opened.
|
||||
/// </summary>
|
||||
public event Action<MenuItem> MenuOpened;
|
||||
public event EventHandler<MenuOpenedEventArgs> MenuOpened;
|
||||
|
||||
/// <summary>
|
||||
/// Raised when a menu is closing passing <see cref="MenuClosingEventArgs"/>.
|
||||
@@ -1254,16 +1254,20 @@ namespace Terminal.Gui {
|
||||
public virtual void OnMenuOpened ()
|
||||
{
|
||||
MenuItem mi = null;
|
||||
MenuBarItem parent;
|
||||
|
||||
if (openCurrentMenu.barItems.Children != null && openCurrentMenu.barItems.Children.Length > 0
|
||||
&& openCurrentMenu?.current > -1) {
|
||||
|
||||
mi = openCurrentMenu.barItems.Children [openCurrentMenu.current];
|
||||
parent = openCurrentMenu.barItems;
|
||||
mi = parent.Children [openCurrentMenu.current];
|
||||
} else if (openCurrentMenu.barItems.IsTopLevel) {
|
||||
parent = null;
|
||||
mi = openCurrentMenu.barItems;
|
||||
} else {
|
||||
mi = openMenu.barItems.Children [openMenu.current];
|
||||
parent = openMenu.barItems;
|
||||
mi = parent.Children [openMenu.current];
|
||||
}
|
||||
MenuOpened?.Invoke (mi);
|
||||
MenuOpened?.Invoke (this, new MenuOpenedEventArgs(parent, mi));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -120,12 +120,14 @@ namespace Terminal.Gui.MenuTests {
|
||||
new MenuItem ("_Copy", "Copies the selection.", Copy)
|
||||
});
|
||||
};
|
||||
menu.MenuOpened += (e) => {
|
||||
Assert.Equal ("_Edit", e.Parent.Title);
|
||||
Assert.Equal ("_Copy", e.Title);
|
||||
Assert.Equal ("Copies the selection.", e.Help);
|
||||
Assert.Equal (Copy, e.Action);
|
||||
e.Action ();
|
||||
menu.MenuOpened += (s, e) => {
|
||||
var mi = e.MenuItem;
|
||||
|
||||
Assert.Equal ("_Edit", mi.Parent.Title);
|
||||
Assert.Equal ("_Copy", mi.Title);
|
||||
Assert.Equal ("Copies the selection.", mi.Help);
|
||||
Assert.Equal (Copy, mi.Action);
|
||||
mi.Action ();
|
||||
Assert.Equal ("Copy", miAction);
|
||||
};
|
||||
menu.MenuClosing += (s,e) => {
|
||||
@@ -194,8 +196,8 @@ Edit
|
||||
new MenuItem ("_Save", "Saves the file.", null, null)
|
||||
})
|
||||
});
|
||||
menu.MenuOpened += (e) => {
|
||||
miCurrent = e;
|
||||
menu.MenuOpened += (s,e) => {
|
||||
miCurrent = e.MenuItem;
|
||||
mCurrent = menu.openMenu;
|
||||
};
|
||||
menu.UseKeysUpDownAsKeysLeftRight = true;
|
||||
@@ -290,8 +292,8 @@ Edit
|
||||
new MenuItem ("_Paste", "", null)
|
||||
})
|
||||
});
|
||||
menu.MenuOpened += (e) => {
|
||||
miCurrent = e;
|
||||
menu.MenuOpened += (s, e) => {
|
||||
miCurrent = e.MenuItem;
|
||||
mCurrent = menu.openCurrentMenu;
|
||||
};
|
||||
Application.Top.Add (menu);
|
||||
@@ -379,8 +381,8 @@ Edit
|
||||
new MenuBarItem ("_About", "Top-Level", () => miAction ="About")
|
||||
});
|
||||
menu.MenuOpening += (s,e) => mbiCurrent = e.CurrentMenu;
|
||||
menu.MenuOpened += (e) => {
|
||||
miCurrent = e;
|
||||
menu.MenuOpened += (s, e) => {
|
||||
miCurrent = e.MenuItem;
|
||||
mCurrent = menu.openCurrentMenu;
|
||||
};
|
||||
menu.MenuClosing += (s,e) => {
|
||||
|
||||
Reference in New Issue
Block a user