Fix inherited icons for script classes

This commit is contained in:
Will Nations 2019-02-06 17:53:24 -06:00
parent aff3dd36ba
commit 2d106eb715
1 changed files with 20 additions and 2 deletions

View File

@ -3350,12 +3350,30 @@ Ref<Texture> EditorNode::get_class_icon(const String &p_class, const String &p_f
if (ScriptServer::is_global_class(p_class)) { if (ScriptServer::is_global_class(p_class)) {
String icon_path = EditorNode::get_editor_data().script_class_get_icon_path(p_class); String icon_path = EditorNode::get_editor_data().script_class_get_icon_path(p_class);
RES icon; RES icon;
if (FileAccess::exists(icon_path)) { if (FileAccess::exists(icon_path)) {
icon = ResourceLoader::load(icon_path); icon = ResourceLoader::load(icon_path);
if (icon.is_valid())
return icon;
} }
if (!icon.is_valid()) {
icon = gui_base->get_icon(ScriptServer::get_global_class_native_base(p_class), "EditorIcons"); Ref<Script> script = ResourceLoader::load(ScriptServer::get_global_class_path(p_class), "Script");
while (script.is_valid()) {
String current_icon_path;
script->get_language()->get_global_class_name(script->get_path(), NULL, &current_icon_path);
if (FileAccess::exists(current_icon_path)) {
RES texture = ResourceLoader::load(current_icon_path);
if (texture.is_valid())
return texture;
}
script = script->get_base_script();
} }
if (icon.is_null()) {
icon = gui_base->get_icon(ScriptServer::get_global_class_base(p_class), "EditorIcons");
}
return icon; return icon;
} }