@@ -38,6 +38,7 @@ class NODE_EDITOR_PUBLIC DataModelRegistry
3838 using RegisteredModelsCategoryMap = std::unordered_map<QString, QString>;
3939 using RegisteredModelsOrder = std::vector<QString>;
4040 using CategoriesSet = std::set<QString>;
41+ using CategoriesOrder = std::vector<QString>;
4142
4243 using RegisteredTypeConvertersMap = std::map<TypeConverterId, TypeConverter>;
4344
@@ -89,6 +90,10 @@ class NODE_EDITOR_PUBLIC DataModelRegistry
8990
9091 CategoriesSet const &categories () const ;
9192
93+ CategoriesOrder const &categoriesOrder () const ;
94+
95+ void sortCategories ();
96+
9297 TypeConverter getTypeConverter (NodeDataType const & d1,
9398 NodeDataType const & d2) const ;
9499
@@ -100,6 +105,8 @@ class NODE_EDITOR_PUBLIC DataModelRegistry
100105
101106 RegisteredModelCreatorsMap _registeredItemCreators;
102107
108+ CategoriesOrder _categoriesOrder;
109+
103110 RegisteredModelsOrder _registeredModelsOrder;
104111
105112 RegisteredTypeConvertersMap _registeredTypeConverters;
@@ -130,12 +137,16 @@ class NODE_EDITOR_PUBLIC DataModelRegistry
130137 registerModelImpl (RegistryItemCreator creator, QString const &category )
131138 {
132139 const QString name = ModelType::Name ();
133- if (_registeredItemCreators.count (name) == 0 )
140+ if (! _registeredItemCreators.count (name))
134141 {
135142 _registeredItemCreators[name] = std::move (creator);
136- _categories.insert (category);
137143 _registeredModelsOrder.push_back (name);
138144 _registeredModelsCategory[name] = category;
145+
146+ if (!_categories.count (category)) {
147+ _categories.insert (category);
148+ _categoriesOrder.push_back (category);
149+ }
139150 }
140151 }
141152
@@ -144,12 +155,16 @@ class NODE_EDITOR_PUBLIC DataModelRegistry
144155 registerModelImpl (RegistryItemCreator creator, QString const &category )
145156 {
146157 const QString name = creator ()->name ();
147- if (_registeredItemCreators.count (name) == 0 )
158+ if (! _registeredItemCreators.count (name))
148159 {
149160 _registeredItemCreators[name] = std::move (creator);
150- _categories.insert (category);
151161 _registeredModelsOrder.push_back (name);
152162 _registeredModelsCategory[name] = category;
163+
164+ if (!_categories.count (category)) {
165+ _categories.insert (category);
166+ _categoriesOrder.push_back (category);
167+ }
153168 }
154169 }
155170
0 commit comments