1
0
mirror of https://github.com/godotengine/godot.git synced 2025-12-30 18:30:54 +00:00

Merge pull request #113774 from sockeye-d/inherited-editor-scripts

Make indirectly inherited `EditorScript`s appear in the command palette
This commit is contained in:
Rémi Verschelde
2025-12-18 14:29:05 +01:00
3 changed files with 11 additions and 1 deletions

View File

@@ -460,6 +460,15 @@ void ScriptServer::get_inheriters_list(const StringName &p_base_type, List<Strin
}
}
void ScriptServer::get_indirect_inheriters_list(const StringName &p_base_type, List<StringName> *r_classes) {
List<StringName> direct_inheritors;
get_inheriters_list(p_base_type, &direct_inheritors);
for (const StringName &inheritor : direct_inheritors) {
r_classes->push_back(inheritor);
get_indirect_inheriters_list(inheritor, r_classes);
}
}
void ScriptServer::remove_global_class_by_path(const String &p_path) {
for (const KeyValue<StringName, GlobalScriptClass> &kv : global_classes) {
if (kv.value.path == p_path) {

View File

@@ -100,6 +100,7 @@ public:
static bool is_global_class_tool(const String &p_class);
static void get_global_class_list(LocalVector<StringName> &r_global_classes);
static void get_inheriters_list(const StringName &p_base_type, List<StringName> *r_classes);
static void get_indirect_inheriters_list(const StringName &p_base_type, List<StringName> *r_classes);
static void save_global_classes();
static Vector<Ref<ScriptBacktrace>> capture_script_backtraces(bool p_include_variables = false);

View File

@@ -53,7 +53,7 @@ void EditorScriptPlugin::command_palette_about_to_popup() {
EditorInterface::get_singleton()->get_command_palette()->remove_command("editor_scripts/" + command);
}
commands.clear();
ScriptServer::get_inheriters_list(SNAME("EditorScript"), &commands);
ScriptServer::get_indirect_inheriters_list(SNAME("EditorScript"), &commands);
for (const StringName &command : commands) {
EditorInterface::get_singleton()->get_command_palette()->add_command(String(command).capitalize(), "editor_scripts/" + command, callable_mp(this, &EditorScriptPlugin::run_command), varray(command), nullptr);
}