Skip to content

Commit 7d4c750

Browse files
authored
Merge pull request #19 from lechu445/fix_multiple_show_
Fix Show already active menu causing StackOverflow
2 parents 4612a9a + 7b49268 commit 7d4c750

5 files changed

Lines changed: 17 additions & 14 deletions

File tree

ConsoleMenu/ConsoleMenu.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class ConsoleMenu : IEnumerable
1919
private readonly CloseTrigger closeTrigger;
2020
private MenuConfig config = new MenuConfig();
2121
private ConsoleMenu? parent = null;
22+
private bool isShown = false;
2223

2324
/// <summary>
2425
/// Initializes a new instance of the <see cref="ConsoleMenu"/> class.
@@ -283,19 +284,21 @@ public ConsoleMenu Configure(MenuConfig config)
283284
/// </summary>
284285
public void Show()
285286
{
286-
new ConsoleMenuDisplay(
287-
this.menuItems,
288-
this.Console,
289-
new List<string>(this.Titles),
290-
this.config,
291-
this.closeTrigger).ShowAsync(CancellationToken.None).GetAwaiter().GetResult();
287+
ShowAsync(CancellationToken.None).GetAwaiter().GetResult();
292288
}
293289

294290
/// <summary>
295291
/// Displays the menu in console.
296292
/// </summary>
297293
public async Task ShowAsync(CancellationToken cancellationToken = default)
298294
{
295+
if (isShown)
296+
{
297+
this.menuItems.UnsetSelectedIndex();
298+
}
299+
300+
isShown = true;
301+
299302
await new ConsoleMenuDisplay(
300303
this.menuItems,
301304
this.Console,

ConsoleMenu/ConsoleMenu.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
<Authors>lechu445</Authors>
77
<Product>ConsoleMenu-simple</Product>
88
<Description>A simple, highly customizable, DOS-like console menu</Description>
9-
<PackageReleaseNotes>- added async API</PackageReleaseNotes>
9+
<PackageReleaseNotes>- Fix Show already active menu causing StackOverflow (#16)</PackageReleaseNotes>
1010
<PackageProjectUrl>https://github.com/lechu445/ConsoleMenu</PackageProjectUrl>
1111
<PublishRepositoryUrl>true</PublishRepositoryUrl>
12-
<Version>2.6.0</Version>
12+
<Version>2.6.1</Version>
1313
<RepositoryUrl>https://github.com/lechu445/ConsoleMenu</RepositoryUrl>
1414
<PackageTags>console, menu, simple</PackageTags>
1515
<PackageLicenseFile>LICENSE.txt</PackageLicenseFile>

ConsoleMenuSampleApp/ConsoleMenuSampleApp.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net5.0</TargetFramework>
5+
<TargetFramework>net6.0</TargetFramework>
66
</PropertyGroup>
77

88
<ItemGroup>

ConsoleMenuTests/ConsoleMenuTests.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net5.0</TargetFramework>
4+
<TargetFramework>net6.0</TargetFramework>
55

66
<IsPackable>false</IsPackable>
77
<Nullable>enable</Nullable>
88
</PropertyGroup>
99

1010
<ItemGroup>
11-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.1" />
12-
<PackageReference Include="xunit" Version="2.4.2" />
13-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
11+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
12+
<PackageReference Include="xunit" Version="2.5.0" />
13+
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.0">
1414
<PrivateAssets>all</PrivateAssets>
1515
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1616
</PackageReference>

ConsoleMenuTests/TestHelpers/AssertHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public static void Equal(string expected, string actual)
1212
}
1313
catch (Xunit.Sdk.EqualException ex)
1414
{
15-
throw new Xunit.Sdk.AssertActualExpectedException(expected, actual, "Expected was not equal to actual", "Expected", "Actual", ex);
15+
throw new Xunit.Sdk.XunitException("Expected was not equal to actual", ex);
1616
}
1717
}
1818
}

0 commit comments

Comments
 (0)