From 0cf915471a75fc6d073c3851473b268555cca4c0 Mon Sep 17 00:00:00 2001 From: Dmitry Stepanov Date: Sun, 13 Sep 2026 11:17:02 +0300 Subject: [PATCH] sort groups by name in entity creator --- editor/src/world/create.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/editor/src/world/create.rs b/editor/src/world/create.rs index 66c6e7925..9505889c1 100644 --- a/editor/src/world/create.rs +++ b/editor/src/world/create.rs @@ -59,7 +59,7 @@ use crate::{ settings::{scene::SceneSettings, Settings}, ui_scene::{commands::graph::AddWidgetCommand, UiScene}, }; -use std::path::PathBuf; +use std::{collections::BTreeMap, path::PathBuf}; #[derive(Default, Eq, PartialEq, Copy, Clone, Debug)] pub enum EntityCreatorMode { @@ -279,27 +279,32 @@ impl EntityCreator { self.items_map.clear(); let constructors = constructors.map(); let mut groups = FxHashMap::default(); + let mut root_items = BTreeMap::default(); for (type_uuid, constructor) in constructors.iter() { for (variant_index, variant) in constructor.variants.iter().enumerate() { let item = make_tree_item(ui, variant.name.clone(), &variant.name); self.items_map .insert(item, ConstructorVariantId::new(type_uuid, variant_index)); if constructor.group.is_empty() { - ui.send(self.groups_tree, TreeRootMessage::AddItem(item)); + root_items.insert(variant.name.as_str(), item); } else { let group = *groups.entry(constructor.group).or_insert_with(|| { - let group = make_tree_item( + let item = make_tree_item( ui, VariantName::new(constructor.group), constructor.group, ); - ui.send(self.groups_tree, TreeRootMessage::AddItem(group)); - group + root_items.insert(constructor.group, item); + item }); ui.send(group, TreeMessage::AddItem(item)) } } } + // Insert in sorted order. + for group in root_items.values() { + ui.send(self.groups_tree, TreeRootMessage::AddItem(*group)); + } } pub fn on_scene_changed(&self, ui: &mut UserInterface, scene_settings: &SceneSettings) {