You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Expose FileDialog callbacks for getting custom icons
This commit is contained in:
@@ -687,6 +687,10 @@ void EditorNode::_update_theme(bool p_skip_creation) {
|
||||
_update_renderer_color();
|
||||
}
|
||||
|
||||
Ref<Texture2D> thumbnail_icon = gui_base->get_theme_icon(SNAME("file_thumbnail"), SNAME("FileDialog"));
|
||||
default_thumbnail.instantiate();
|
||||
default_thumbnail->set_image(thumbnail_icon->get_image());
|
||||
|
||||
editor_dock_manager->update_tab_styles();
|
||||
editor_dock_manager->update_docks_menu();
|
||||
editor_dock_manager->set_tab_icon_max_width(theme->get_constant(SNAME("class_icon_size"), EditorStringName(Editor)));
|
||||
@@ -5625,6 +5629,19 @@ Ref<Texture2D> EditorNode::_file_dialog_get_icon(const String &p_path) {
|
||||
return singleton->icon_type_cache["Object"];
|
||||
}
|
||||
|
||||
Ref<Texture2D> EditorNode::_file_dialog_get_thumbnail(const String &p_path) {
|
||||
Ref<ImageTexture> texture = singleton->default_thumbnail->duplicate();
|
||||
EditorResourcePreview::get_singleton()->queue_resource_preview(p_path, callable_mp_static(EditorNode::_file_dialog_thumbnail_callback).bind(texture));
|
||||
return texture;
|
||||
}
|
||||
|
||||
void EditorNode::_file_dialog_thumbnail_callback(const String &p_path, const Ref<Texture2D> &p_preview, const Ref<Texture2D> &p_small_preview, Ref<ImageTexture> p_texture) {
|
||||
ERR_FAIL_COND(p_texture.is_null());
|
||||
if (p_preview.is_valid()) {
|
||||
p_texture->set_image(p_preview->get_image());
|
||||
}
|
||||
}
|
||||
|
||||
void EditorNode::_build_icon_type_cache() {
|
||||
List<StringName> tl;
|
||||
theme->get_icon_list(EditorStringName(EditorIcons), &tl);
|
||||
@@ -7817,7 +7834,8 @@ EditorNode::EditorNode() {
|
||||
EditorContextMenuPluginManager::create();
|
||||
|
||||
// Used for previews.
|
||||
FileDialog::get_icon_func = _file_dialog_get_icon;
|
||||
FileDialog::set_get_icon_callback(callable_mp_static(_file_dialog_get_icon));
|
||||
FileDialog::set_get_thumbnail_callback(callable_mp_static(_file_dialog_get_thumbnail));
|
||||
FileDialog::register_func = _file_dialog_register;
|
||||
FileDialog::unregister_func = _file_dialog_unregister;
|
||||
|
||||
@@ -8919,7 +8937,6 @@ EditorNode::~EditorNode() {
|
||||
GDExtensionEditorPlugins::editor_node_add_plugin = nullptr;
|
||||
GDExtensionEditorPlugins::editor_node_remove_plugin = nullptr;
|
||||
|
||||
FileDialog::get_icon_func = nullptr;
|
||||
FileDialog::register_func = nullptr;
|
||||
FileDialog::unregister_func = nullptr;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user