Fixes #1739. Setting menu UseKeysUpDownAsKeysLeftRight as false by default. (#1779)

* Fixes #1739. Setting menu UseKeysUpDownAsKeysLeftRight property as false by default.

* Fixed some more bugs and added support for UseKeysUpDownAsKeysLeftRight on the demo file.
This commit is contained in:
BDisp
2022-06-11 11:24:46 +01:00
committed by GitHub
parent d16f0f607f
commit c867d32a13
3 changed files with 120 additions and 13 deletions

View File

@@ -177,6 +177,88 @@ Edit
void Copy () => miAction = "Copy";
}
[Fact, AutoInitShutdown]
public void MenuOpened_On_Disabled_MenuItem ()
{
MenuItem miCurrent = null;
Menu mCurrent = null;
var menu = new MenuBar (new MenuBarItem [] {
new MenuBarItem ("_File", new MenuItem [] {
new MenuBarItem ("_New", new MenuItem [] {
new MenuItem ("_New doc", "Creates new doc.", null, () => false)
}),
new MenuItem ("_Save", "Saves the file.", null, null)
})
});
menu.MenuOpened += (e) => {
miCurrent = e;
mCurrent = menu.openMenu;
};
menu.UseKeysUpDownAsKeysLeftRight = true;
Application.Top.Add (menu);
// open the menu
Assert.True (menu.MouseEvent (new MouseEvent () {
X = 1,
Y = 0,
Flags = MouseFlags.Button1Pressed,
View = menu
}));
Assert.True (menu.IsMenuOpen);
Assert.Equal ("_File", miCurrent.Parent.Title);
Assert.Equal ("_New", miCurrent.Title);
Assert.True (mCurrent.MouseEvent (new MouseEvent () {
X = 1,
Y = 1,
Flags = MouseFlags.ReportMousePosition,
View = mCurrent
}));
Assert.True (menu.IsMenuOpen);
Assert.Equal ("_File", miCurrent.Parent.Title);
Assert.Equal ("_New", miCurrent.Title);
Assert.True (mCurrent.MouseEvent (new MouseEvent () {
X = 1,
Y = 2,
Flags = MouseFlags.ReportMousePosition,
View = mCurrent
}));
Assert.True (menu.IsMenuOpen);
Assert.Equal ("_File", miCurrent.Parent.Title);
Assert.Equal ("_Save", miCurrent.Title);
// close the menu
Assert.True (menu.MouseEvent (new MouseEvent () {
X = 1,
Y = 0,
Flags = MouseFlags.Button1Pressed,
View = menu
}));
Assert.False (menu.IsMenuOpen);
// open the menu
Assert.True (menu.ProcessHotKey (new KeyEvent (Key.F9, new KeyModifiers ())));
Assert.True (menu.IsMenuOpen);
Assert.Equal ("_New", miCurrent.Parent.Title);
Assert.Equal ("_New doc", miCurrent.Title);
Assert.True (mCurrent.ProcessKey (new KeyEvent (Key.CursorDown, new KeyModifiers ())));
Assert.True (menu.IsMenuOpen);
Assert.Equal ("_File", miCurrent.Parent.Title);
Assert.Equal ("_Save", miCurrent.Title);
Assert.True (mCurrent.ProcessKey (new KeyEvent (Key.CursorUp, new KeyModifiers ())));
Assert.True (menu.IsMenuOpen);
Assert.Equal ("_File", miCurrent.Parent.Title);
Assert.Equal ("_New", miCurrent.Title);
// close the menu
Assert.True (menu.ProcessHotKey (new KeyEvent (Key.F9, new KeyModifiers ())));
Assert.False (menu.IsMenuOpen);
}
[Fact]
[AutoInitShutdown]
public void MouseEvent_Test ()
@@ -293,6 +375,7 @@ Edit
miCurrent = null;
mCurrent = null;
};
menu.UseKeysUpDownAsKeysLeftRight = true;
Application.Top.Add (menu);
Application.Begin (Application.Top);
@@ -304,7 +387,7 @@ Edit
Assert.True (menu.ProcessKey (new KeyEvent (Key.CursorLeft, new KeyModifiers ())));
Assert.True (menu.IsMenuOpen);
Assert.Equal ("_About", GetCurrentMenuBarItemTitle ());
Assert.Equal ("None", GetCurrentMenuTitle ());
Assert.Equal ("_About", GetCurrentMenuTitle ());
Assert.True (menu.ProcessKey (new KeyEvent (Key.CursorRight, new KeyModifiers ())));
Assert.True (menu.IsMenuOpen);
@@ -363,7 +446,7 @@ Edit
Assert.True (mCurrent.ProcessKey (new KeyEvent (Key.CursorLeft, new KeyModifiers ())));
Assert.True (menu.IsMenuOpen);
Assert.Equal ("_About", GetCurrentMenuBarItemTitle ());
Assert.Equal ("None", GetCurrentMenuTitle ());
Assert.Equal ("_About", GetCurrentMenuTitle ());
Assert.True (mCurrent.ProcessKey (new KeyEvent (Key.CursorRight, new KeyModifiers ())));
Assert.True (menu.IsMenuOpen);
@@ -393,7 +476,7 @@ Edit
Assert.True (mCurrent.ProcessKey (new KeyEvent (Key.CursorLeft, new KeyModifiers ())));
Assert.True (menu.IsMenuOpen);
Assert.Equal ("_About", GetCurrentMenuBarItemTitle ());
Assert.Equal ("None", GetCurrentMenuTitle ());
Assert.Equal ("_About", GetCurrentMenuTitle ());
Assert.True (mCurrent.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
Assert.False (menu.IsMenuOpen);
Assert.Equal ("Closed", GetCurrentMenuBarItemTitle ());
@@ -603,7 +686,7 @@ Edit
new MenuItem ("Three", "", null),
})
});
menu.UseKeysUpDownAsKeysLeftRight = true;
Application.Top.Add (menu);
Assert.Equal (Point.Empty, new Point (menu.Frame.X, menu.Frame.Y));