Skip to content

Commit

Permalink
Merge pull request #79203 from KoBeWi/visible_confusion
Browse files Browse the repository at this point in the history
Don't grab theme icons for scripts
  • Loading branch information
YuriSizov committed Jul 26, 2023
2 parents 6f6f7db + 51f92d1 commit 921776f
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 12 deletions.
9 changes: 0 additions & 9 deletions editor/editor_data.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1154,15 +1154,6 @@ Ref<Texture2D> EditorData::get_script_icon(const Ref<Script> &p_script) {
return ext_icon;
}

// Look for the base type in the editor theme.
// This is only relevant for built-in classes.
const Control *gui_base = EditorNode::get_singleton()->get_gui_base();
if (gui_base && gui_base->has_theme_icon(base_type, SNAME("EditorIcons"))) {
Ref<Texture2D> theme_icon = gui_base->get_theme_icon(base_type, SNAME("EditorIcons"));
_script_icon_cache[p_script] = theme_icon;
return theme_icon;
}

// If no icon found, cache it as null.
_script_icon_cache[p_script] = Ref<Texture>();
return nullptr;
Expand Down
14 changes: 12 additions & 2 deletions editor/editor_node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4280,7 +4280,7 @@ void EditorNode::_pick_main_scene_custom_action(const String &p_custom_action_na
}
}

Ref<Texture2D> EditorNode::_get_class_or_script_icon(const String &p_class, const Ref<Script> &p_script, const String &p_fallback) {
Ref<Texture2D> EditorNode::_get_class_or_script_icon(const String &p_class, const Ref<Script> &p_script, const String &p_fallback, bool p_fallback_script_to_theme) {
ERR_FAIL_COND_V_MSG(p_class.is_empty(), nullptr, "Class name cannot be empty.");
EditorData &ed = EditorNode::get_editor_data();

Expand All @@ -4290,6 +4290,16 @@ Ref<Texture2D> EditorNode::_get_class_or_script_icon(const String &p_class, cons
if (script_icon.is_valid()) {
return script_icon;
}

if (p_fallback_script_to_theme) {
// Look for the base type in the editor theme.
// This is only relevant for built-in classes.
String base_type;
p_script->get_language()->get_global_class_name(p_script->get_path(), &base_type);
if (gui_base && gui_base->has_theme_icon(base_type, SNAME("EditorIcons"))) {
return gui_base->get_theme_icon(base_type, SNAME("EditorIcons"));
}
}
}

// Script was not valid or didn't yield any useful values, try the class name
Expand Down Expand Up @@ -4342,7 +4352,7 @@ Ref<Texture2D> EditorNode::get_class_icon(const String &p_class, const String &p
scr = EditorNode::get_editor_data().script_class_load_script(p_class);
}

return _get_class_or_script_icon(p_class, scr, p_fallback);
return _get_class_or_script_icon(p_class, scr, p_fallback, true);
}

bool EditorNode::is_object_of_custom_type(const Object *p_object, const StringName &p_class) {
Expand Down
2 changes: 1 addition & 1 deletion editor/editor_node.h
Original file line number Diff line number Diff line change
Expand Up @@ -688,7 +688,7 @@ class EditorNode : public Node {
void _feature_profile_changed();
bool _is_class_editor_disabled_by_feature_profile(const StringName &p_class);

Ref<Texture2D> _get_class_or_script_icon(const String &p_class, const Ref<Script> &p_script, const String &p_fallback = "Object");
Ref<Texture2D> _get_class_or_script_icon(const String &p_class, const Ref<Script> &p_script, const String &p_fallback = "Object", bool p_fallback_script_to_theme = false);

void _pick_main_scene_custom_action(const String &p_custom_action_name);

Expand Down

0 comments on commit 921776f

Please sign in to comment.