Add support for fake input in asciicast recordings

* Fixes a bug with `SelectionPrompt` and page size.
* Allow `IAnsiConsoleInput` to return `null`.
This commit is contained in:
Patrik Svensson
2021-05-24 02:36:14 +02:00
committed by Phil Scott
parent 46abadaccb
commit 450d87f5d3
56 changed files with 1314 additions and 1166 deletions

View File

@ -24,8 +24,13 @@ namespace Spectre.Console
while (true)
{
var key = console.Input.ReadKey(true);
var rawKey = console.Input.ReadKey(true);
if (rawKey == null)
{
continue;
}
var key = rawKey.Value;
if (key.Key == ConsoleKey.Enter)
{
return text;

View File

@ -12,6 +12,6 @@ namespace Spectre.Console
/// </summary>
/// <param name="intercept">Whether or not to intercept the key.</param>
/// <returns>The key that was read.</returns>
ConsoleKeyInfo ReadKey(bool intercept);
ConsoleKeyInfo? ReadKey(bool intercept);
}
}

View File

@ -11,7 +11,7 @@ namespace Spectre.Console
_profile = profile ?? throw new ArgumentNullException(nameof(profile));
}
public ConsoleKeyInfo ReadKey(bool intercept)
public ConsoleKeyInfo? ReadKey(bool intercept)
{
if (!_profile.Capabilities.Interactive)
{

View File

@ -48,8 +48,13 @@ namespace Spectre.Console
while (true)
{
var key = _console.Input.ReadKey(true);
var rawKey = _console.Input.ReadKey(true);
if (rawKey == null)
{
continue;
}
var key = rawKey.Value;
var result = _strategy.HandleInput(key, state);
if (result == ListPromptInputResult.Submit)
{

View File

@ -77,7 +77,7 @@ namespace Spectre.Console
{
// Create the list prompt
var prompt = new ListPrompt<T>(console, this);
var result = prompt.Show(_tree);
var result = prompt.Show(_tree, PageSize);
// Return the selected item
return result.Items[result.Index].Data;