From 36ea41bef1f1b2d69ab867c16637d2d136f53483 Mon Sep 17 00:00:00 2001 From: alexomur Date: Sun, 27 Jul 2025 18:05:09 +0300 Subject: [PATCH 1/2] fix: no return to menu button --- Features/Menu.cs | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/Features/Menu.cs b/Features/Menu.cs index f2433bd..d326d2b 100644 --- a/Features/Menu.cs +++ b/Features/Menu.cs @@ -318,17 +318,35 @@ private List GetSettings(ReferenceHub hub) if (Plugin.Instance.Config.AllowPinnedContent) settings.AddRange(Pinned.Values.SelectMany(pin => pin)); - if (LoadedMenus.First(x => x.CheckAccess(hub) && x.MenuRelated == null) != this || Plugin.Instance.Config.ForceMainMenuEvenIfOnlyOne) + List availableMainMenus = LoadedMenus + .Where(x => x.CheckAccess(hub) && x.MenuRelated == null) + .ToList(); + + int availableMainMenusCount = availableMainMenus.Count; + Menu firstMainMenu = availableMainMenus.FirstOrDefault(); + + bool isActualRootMenu = Id == 0; + bool shouldAddBackButton = !isActualRootMenu && + (MenuRelated != null || + availableMainMenusCount > 1 || + Plugin.Instance.Config.ForceMainMenuEvenIfOnlyOne); + + if (shouldAddBackButton) { if (MenuRelated != null) - settings.Add(new SSButton(0, string.Format(Plugin.Instance.Translation.ReturnTo.Label, Menu.GetMenu(MenuRelated)?.Name ?? "Unknown"), + { + Menu parentMenu = GetMenu(MenuRelated); + settings.Add(new SSButton(0, string.Format(Plugin.Instance.Translation.ReturnTo.Label, parentMenu?.Name ?? "Unknown"), Plugin.Instance.Translation.ReturnTo.ButtonText)); + } else + { settings.Add(new SSButton(0, Plugin.Instance.Translation.ReturnToMenu.Label, Plugin.Instance.Translation.ReturnToMenu.ButtonText)); + } } - if (LoadedMenus.First(x => x.CheckAccess(hub) && x.MenuRelated == null) == this && !Plugin.Instance.Config.ForceMainMenuEvenIfOnlyOne) + if (firstMainMenu == this && !Plugin.Instance.Config.ForceMainMenuEvenIfOnlyOne) settings.Add(new SSGroupHeader(Name)); else { @@ -339,7 +357,7 @@ private List GetSettings(ReferenceHub hub) foreach (Menu s in LoadedMenus.Where(x => x.MenuRelated == GetType() && x != this)) settings.Add(new SSButton(s.Id, string.Format(Plugin.Instance.Translation.OpenMenu.Label, s.Name), Plugin.Instance.Translation.OpenMenu.ButtonText, null, string.IsNullOrEmpty(Description) ? null : Description)); - if (LoadedMenus.First(x => x.CheckAccess(hub) && x.MenuRelated == null) != this || Plugin.Instance.Config.ForceMainMenuEvenIfOnlyOne) + if (firstMainMenu != this || Plugin.Instance.Config.ForceMainMenuEvenIfOnlyOne) settings.Add(new SSGroupHeader(Name, false, Description)); if (this is AssemblyMenu assemblyMenu && From fdd79c3d4f7f2bad881ab2b10d633543a51c641f Mon Sep 17 00:00:00 2001 From: alexomur Date: Mon, 4 Aug 2025 04:35:03 +0300 Subject: [PATCH 2/2] chore: exiled 9.7.0 --- SSMenuSystem.csproj | 2 +- SSMenuSystem.sln.DotSettings.user | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/SSMenuSystem.csproj b/SSMenuSystem.csproj index 1b0c335..5604df6 100644 --- a/SSMenuSystem.csproj +++ b/SSMenuSystem.csproj @@ -140,7 +140,7 @@ - +