diff --git a/Source/Editor/GUI/ContextMenu/ContextMenu.cs b/Source/Editor/GUI/ContextMenu/ContextMenu.cs
index 493c9d14b..f562cd786 100644
--- a/Source/Editor/GUI/ContextMenu/ContextMenu.cs
+++ b/Source/Editor/GUI/ContextMenu/ContextMenu.cs
@@ -122,6 +122,25 @@ namespace FlaxEditor.GUI.ContextMenu
///
public Panel ItemsContainer => _panel;
+ ///
+ /// The auto sort.
+ ///
+ private bool _autosort;
+
+ ///
+ /// The auto sort property.
+ ///
+ public bool AutoSort
+ {
+ get => _autosort;
+ set
+ {
+ _autosort = value;
+ if (_autosort)
+ SortButtons();
+ }
+ }
+
///
/// Initializes a new instance of the class.
///
@@ -137,6 +156,24 @@ namespace FlaxEditor.GUI.ContextMenu
};
}
+ ///
+ /// Sort all alphabetically.
+ ///
+ /// Override
+ public void SortButtons(bool force = false)
+ {
+ if (!_autosort && !force)
+ return;
+ _panel.Children.Sort(((control, control1) =>
+ {
+ if (control is ContextMenuButton cmb && control1 is ContextMenuButton cmb1)
+ return String.Compare(cmb.Text, cmb1.Text, StringComparison.OrdinalIgnoreCase);
+ if (!(control is ContextMenuButton))
+ return (1);
+ return (-1);
+ }));
+ }
+
///
/// Removes all the added items (buttons, separators, etc.).
///
@@ -158,6 +195,7 @@ namespace FlaxEditor.GUI.ContextMenu
{
var item = new ContextMenuButton(this, text);
item.Parent = _panel;
+ SortButtons();
return item;
}
@@ -171,6 +209,7 @@ namespace FlaxEditor.GUI.ContextMenu
{
var item = new ContextMenuButton(this, text, shortKeys);
item.Parent = _panel;
+ SortButtons();
return item;
}
@@ -185,6 +224,7 @@ namespace FlaxEditor.GUI.ContextMenu
var item = new ContextMenuButton(this, text);
item.Parent = _panel;
item.Clicked += clicked;
+ SortButtons();
return item;
}
@@ -199,6 +239,7 @@ namespace FlaxEditor.GUI.ContextMenu
var item = new ContextMenuButton(this, text);
item.Parent = _panel;
item.ButtonClicked += clicked;
+ SortButtons();
return item;
}
@@ -214,6 +255,7 @@ namespace FlaxEditor.GUI.ContextMenu
var item = new ContextMenuButton(this, text, shortKeys);
item.Parent = _panel;
item.Clicked += clicked;
+ SortButtons();
return item;
}