mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-30 09:47:58 +01:00
Fixes TableView not activating after keybinding refactor (#1593)
* Fixes TableView not activating after keybinding refactor * Fix reading old value not new one
This commit is contained in:
@@ -177,6 +177,10 @@ namespace Terminal.Gui {
|
||||
set {
|
||||
if (cellActivationKey != value) {
|
||||
ReplaceKeyBinding (cellActivationKey, value);
|
||||
|
||||
// of API user is mixing and matching old and new methods of keybinding then they may have lost
|
||||
// the old binding (e.g. with ClearKeybindings) so ReplaceKeyBinding alone will fail
|
||||
AddKeyBinding (value, Command.Accept);
|
||||
cellActivationKey = value;
|
||||
}
|
||||
}
|
||||
@@ -222,7 +226,7 @@ namespace Terminal.Gui {
|
||||
AddCommand (Command.BottomEndExtend, () => { ChangeSelectionToEndOfTable (true); return true; });
|
||||
|
||||
AddCommand (Command.SelectAll, () => { SelectAll(); return true; });
|
||||
AddCommand (Command.Accept, () => { new CellActivatedEventArgs (Table, SelectedColumn, SelectedRow); return true; });
|
||||
AddCommand (Command.Accept, () => { OnCellActivated(new CellActivatedEventArgs (Table, SelectedColumn, SelectedRow)); return true; });
|
||||
|
||||
// Default keybindings for this view
|
||||
AddKeyBinding (Key.CursorLeft, Command.Left);
|
||||
|
||||
@@ -492,6 +492,44 @@ namespace Terminal.Gui.Views {
|
||||
Application.Shutdown ();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[AutoInitShutdown]
|
||||
public void TableView_Activate()
|
||||
{
|
||||
string activatedValue = null;
|
||||
var tv = new TableView (BuildTable(1,1));
|
||||
tv.CellActivated += (c) => activatedValue = c.Table.Rows[c.Row][c.Col].ToString();
|
||||
|
||||
Application.Top.Add (tv);
|
||||
Application.Begin (Application.Top);
|
||||
|
||||
// pressing enter should activate the first cell (selected cell)
|
||||
tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ()));
|
||||
Assert.Equal ("R0C0",activatedValue);
|
||||
|
||||
// reset the test
|
||||
activatedValue = null;
|
||||
|
||||
// clear keybindings and ensure that Enter does not trigger the event anymore
|
||||
tv.ClearKeybindings ();
|
||||
tv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ()));
|
||||
Assert.Null(activatedValue);
|
||||
|
||||
// New method for changing the activation key
|
||||
tv.AddKeyBinding (Key.z, Command.Accept);
|
||||
tv.ProcessKey (new KeyEvent (Key.z, new KeyModifiers ()));
|
||||
Assert.Equal ("R0C0", activatedValue);
|
||||
|
||||
// reset the test
|
||||
activatedValue = null;
|
||||
tv.ClearKeybindings ();
|
||||
|
||||
// Old method for changing the activation key
|
||||
tv.CellActivationKey = Key.z;
|
||||
tv.ProcessKey (new KeyEvent (Key.z, new KeyModifiers ()));
|
||||
Assert.Equal ("R0C0", activatedValue);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TableView_ColorsTest_ColorGetter ()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user