diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2022-01-22 19:48:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-22 19:48:35 +0100 |
commit | c83563e810768d5672127a521db09da2adde808b (patch) | |
tree | c4844e7a7b1aa523acb861a0a925262766f1e7f5 | |
parent | baac3f5ed320bbfc5f7ba3fdba1299cb888df4e4 (diff) | |
parent | c635ab914dc1fa904db26779b43f4ed61fad3221 (diff) |
Merge pull request #57063 from kleonc/sprite_frames_editor_src_texture_paths_in_tooltip
`SpriteFramesEditor` Show `AtlasTexture`'s source texture path in the frame's tooltip
-rw-r--r-- | editor/plugins/sprite_frames_editor_plugin.cpp | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp index 3350cec912..9013eaf9d8 100644 --- a/editor/plugins/sprite_frames_editor_plugin.cpp +++ b/editor/plugins/sprite_frames_editor_plugin.cpp @@ -821,19 +821,30 @@ void SpriteFramesEditor::_update_library(bool p_skip_selector) { for (int i = 0; i < frames->get_frame_count(edited_anim); i++) { String name; - Ref<Texture2D> icon; + Ref<Texture> frame = frames->get_frame(edited_anim, i); - if (frames->get_frame(edited_anim, i).is_null()) { + if (frame.is_null()) { name = itos(i) + ": " + TTR("(empty)"); - } else { - name = itos(i) + ": " + frames->get_frame(edited_anim, i)->get_name(); - icon = frames->get_frame(edited_anim, i); + name = itos(i) + ": " + frame->get_name(); } - tree->add_item(name, icon); - if (frames->get_frame(edited_anim, i).is_valid()) { - tree->set_item_tooltip(tree->get_item_count() - 1, frames->get_frame(edited_anim, i)->get_path()); + tree->add_item(name, frame); + if (frame.is_valid()) { + String tooltip = frame->get_path(); + + // Frame is often saved as an AtlasTexture subresource within a scene/resource file, + // thus its path might be not what the user is looking for. So we're also showing + // subsequent source texture paths. + String prefix = String::utf8("┖╴"); + Ref<AtlasTexture> at = frame; + while (at.is_valid() && at->get_atlas().is_valid()) { + tooltip += "\n" + prefix + at->get_atlas()->get_path(); + prefix = " " + prefix; + at = at->get_atlas(); + } + + tree->set_item_tooltip(tree->get_item_count() - 1, tooltip); } if (sel == i) { tree->select(tree->get_item_count() - 1); |