diff --git a/Dalamud/Interface/Internal/Windows/TitleScreenMenuWindow.cs b/Dalamud/Interface/Internal/Windows/TitleScreenMenuWindow.cs index 10180f0c3..8c835c76a 100644 --- a/Dalamud/Interface/Internal/Windows/TitleScreenMenuWindow.cs +++ b/Dalamud/Interface/Internal/Windows/TitleScreenMenuWindow.cs @@ -97,16 +97,17 @@ internal class TitleScreenMenuWindow : Window, IDisposable public override void Draw() { var scale = ImGui.GetIO().FontGlobalScale; - - var tsm = Service.Get(); + var entries = Service.Get().Entries + .OrderByDescending(x => x.IsInternal) + .ToList(); switch (this.state) { case State.Show: { - for (var i = 0; i < tsm.Entries.Count; i++) + for (var i = 0; i < entries.Count; i++) { - var entry = tsm.Entries[i]; + var entry = entries[i]; if (!this.moveEasings.TryGetValue(entry.Id, out var moveEasing)) { @@ -172,9 +173,9 @@ internal class TitleScreenMenuWindow : Window, IDisposable using (ImRaii.PushStyle(ImGuiStyleVar.Alpha, (float)this.fadeOutEasing.Value)) { - for (var i = 0; i < tsm.Entries.Count; i++) + for (var i = 0; i < entries.Count; i++) { - var entry = tsm.Entries[i]; + var entry = entries[i]; var finalPos = (i + 1) * this.shadeTexture.Height * scale; @@ -205,7 +206,7 @@ internal class TitleScreenMenuWindow : Window, IDisposable case State.Hide: { - if (this.DrawEntry(tsm.Entries[0], true, false, true, true, false)) + if (this.DrawEntry(entries[0], true, false, true, true, false)) { this.state = State.Show; } @@ -217,7 +218,7 @@ internal class TitleScreenMenuWindow : Window, IDisposable } } - var srcText = tsm.Entries.Select(e => e.Name).ToHashSet(); + var srcText = entries.Select(e => e.Name).ToHashSet(); var keys = this.specialGlyphRequests.Keys.ToHashSet(); keys.RemoveWhere(x => srcText.Contains(x)); foreach (var key in keys) diff --git a/Dalamud/Interface/TitleScreenMenu.cs b/Dalamud/Interface/TitleScreenMenu.cs index 7b3897fdb..c9e1458d6 100644 --- a/Dalamud/Interface/TitleScreenMenu.cs +++ b/Dalamud/Interface/TitleScreenMenu.cs @@ -121,7 +121,10 @@ public class TitleScreenMenu : IServiceType lock (this.entries) { - var entry = new TitleScreenMenuEntry(null, priority, text, texture, onTriggered); + var entry = new TitleScreenMenuEntry(null, priority, text, texture, onTriggered) + { + IsInternal = true, + }; this.entries.Add(entry); return entry; } @@ -148,7 +151,10 @@ public class TitleScreenMenu : IServiceType var priority = entriesOfAssembly.Any() ? unchecked(entriesOfAssembly.Select(x => x.Priority).Max() + 1) : 0; - var entry = new TitleScreenMenuEntry(null, priority, text, texture, onTriggered); + var entry = new TitleScreenMenuEntry(null, priority, text, texture, onTriggered) + { + IsInternal = true, + }; this.entries.Add(entry); return entry; } @@ -192,6 +198,11 @@ public class TitleScreenMenu : IServiceType /// Gets or sets the texture of this entry. /// public TextureWrap Texture { get; set; } + + /// + /// Gets or sets a value indicating whether or not this entry is internal. + /// + internal bool IsInternal { get; set; } /// /// Gets the calling assembly of this entry.