فهرست منبع

Merge pull request #65957 from EricEzaM/GH-65956-fix-ed-shortcut-section-order

Update Editor Shortcuts tree creation to always have sections in same order
Rémi Verschelde 3 سال پیش
والد
کامیت
1a0943e0f8
1فایلهای تغییر یافته به همراه29 افزوده شده و 24 حذف شده
  1. 29 24
      editor/editor_settings_dialog.cpp

+ 29 - 24
editor/editor_settings_dialog.cpp

@@ -416,45 +416,50 @@ void EditorSettingsDialog::_update_shortcuts() {
 
 	List<String> slist;
 	EditorSettings::get_singleton()->get_shortcut_list(&slist);
+	slist.sort(); // Sort alphabetically.
 
 	const EditorPropertyNameProcessor::Style name_style = EditorPropertyNameProcessor::get_settings_style();
 	const EditorPropertyNameProcessor::Style tooltip_style = EditorPropertyNameProcessor::get_tooltip_style(name_style);
 
+	// Create all sections first.
 	for (const String &E : slist) {
 		Ref<Shortcut> sc = EditorSettings::get_singleton()->get_shortcut(E);
-		if (!sc->has_meta("original")) {
+		String section_name = E.get_slice("/", 0);
+
+		if (sections.has(section_name)) {
 			continue;
 		}
 
-		// Shortcut Section
+		TreeItem *section = shortcuts->create_item(root);
 
-		TreeItem *section;
-		String section_name = E.get_slice("/", 0);
+		const String item_name = EditorPropertyNameProcessor::get_singleton()->process_name(section_name, name_style);
+		const String tooltip = EditorPropertyNameProcessor::get_singleton()->process_name(section_name, tooltip_style);
 
-		if (sections.has(section_name)) {
-			section = sections[section_name];
-		} else {
-			section = shortcuts->create_item(root);
-
-			const String item_name = EditorPropertyNameProcessor::get_singleton()->process_name(section_name, name_style);
-			const String tooltip = EditorPropertyNameProcessor::get_singleton()->process_name(section_name, tooltip_style);
-
-			section->set_text(0, item_name);
-			section->set_tooltip_text(0, tooltip);
-			section->set_selectable(0, false);
-			section->set_selectable(1, false);
-			section->set_custom_bg_color(0, shortcuts->get_theme_color(SNAME("prop_subsection"), SNAME("Editor")));
-			section->set_custom_bg_color(1, shortcuts->get_theme_color(SNAME("prop_subsection"), SNAME("Editor")));
-
-			if (collapsed.has(item_name)) {
-				section->set_collapsed(collapsed[item_name]);
-			}
+		section->set_text(0, item_name);
+		section->set_tooltip_text(0, tooltip);
+		section->set_selectable(0, false);
+		section->set_selectable(1, false);
+		section->set_custom_bg_color(0, shortcuts->get_theme_color(SNAME("prop_subsection"), SNAME("Editor")));
+		section->set_custom_bg_color(1, shortcuts->get_theme_color(SNAME("prop_subsection"), SNAME("Editor")));
 
-			sections[section_name] = section;
+		if (collapsed.has(item_name)) {
+			section->set_collapsed(collapsed[item_name]);
 		}
 
-		// Shortcut Item
+		sections[section_name] = section;
+	}
 
+	// Add shortcuts to sections.
+	for (const String &E : slist) {
+		Ref<Shortcut> sc = EditorSettings::get_singleton()->get_shortcut(E);
+		if (!sc->has_meta("original")) {
+			continue;
+		}
+
+		String section_name = E.get_slice("/", 0);
+		TreeItem *section = sections[section_name];
+
+		// Shortcut Item
 		if (!shortcut_filter.is_subsequence_ofn(sc->get_name())) {
 			continue;
 		}