Ver código fonte

Merge pull request #107349 from beicause/project-settings-fix-enum-hint

ProjectSettings: Fix missing property hint of setting overrides
Rémi Verschelde 1 mês atrás
pai
commit
97cef7dce8
1 arquivos alterados com 11 adições e 4 exclusões
  1. 11 4
      core/config/project_settings.cpp

+ 11 - 4
core/config/project_settings.cpp

@@ -421,7 +421,7 @@ void ProjectSettings::_get_property_list(List<PropertyInfo> *p_list) const {
 	_THREAD_SAFE_METHOD_
 
 	RBSet<_VCSort> vclist;
-	HashMap<String, Vector<_VCSort>> setting_overrides;
+	HashMap<String, LocalVector<_VCSort>> setting_overrides;
 
 	for (const KeyValue<StringName, VariantContainer> &E : props) {
 		const VariantContainer *v = &E.value;
@@ -464,10 +464,11 @@ void ProjectSettings::_get_property_list(List<PropertyInfo> *p_list) const {
 		}
 
 		int dot = vc.name.rfind_char('.');
-		if (dot != -1 && !custom_prop_info.has(vc.name)) {
+		if (dot != -1) {
 			StringName n = vc.name.substr(0, dot);
-			if (props.has(n)) { // Property is an override.
-				setting_overrides[n].append(vc);
+			if (props.has(n)) {
+				// Property is an override.
+				setting_overrides[n].push_back(vc);
 			} else {
 				vclist.insert(vc);
 			}
@@ -505,6 +506,12 @@ void ProjectSettings::_get_property_list(List<PropertyInfo> *p_list) const {
 					pi.name = over.name;
 					pi.usage = over.flags;
 					p_list->push_back(pi);
+				} else if (custom_prop_info.has(base.name)) {
+					// Fallback to base property info.
+					PropertyInfo pi = custom_prop_info[base.name];
+					pi.name = over.name;
+					pi.usage = over.flags;
+					p_list->push_back(pi);
 				} else {
 					p_list->push_back(PropertyInfo(over.type, over.name, PROPERTY_HINT_NONE, "", over.flags));
 				}