diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp index 36a0b46d92e..6e527bd1045 100644 --- a/editor/plugins/asset_library_editor_plugin.cpp +++ b/editor/plugins/asset_library_editor_plugin.cpp @@ -55,7 +55,9 @@ static inline void setup_http_request(HTTPRequest *request) { } void EditorAssetLibraryItem::configure(const String &p_title, int p_asset_id, const String &p_category, int p_category_id, const String &p_author, int p_author_id, const String &p_cost) { - title->set_text(p_title); + title_text = p_title; + title->set_text(title_text); + title->set_tooltip_text(title_text); asset_id = p_asset_id; category->set_text(p_category); category_id = p_category_id; @@ -66,16 +68,15 @@ void EditorAssetLibraryItem::configure(const String &p_title, int p_asset_id, co // TODO: Refactor this method to use the TextServer. void EditorAssetLibraryItem::clamp_width(int p_max_width) { - int text_pixel_width = title->get_button_font().ptr()->get_string_size(title->get_text()).x * EDSCALE; - - String full_text = title->get_text(); - title->set_tooltip_text(full_text); + int text_pixel_width = title->get_button_font()->get_string_size(title_text).x * EDSCALE; if (text_pixel_width > p_max_width) { // Truncate title text to within the current column width. - int max_length = p_max_width / (text_pixel_width / full_text.length()); - String truncated_text = full_text.left(max_length - 3) + "..."; + int max_length = p_max_width / (text_pixel_width / title_text.length()); + String truncated_text = title_text.left(max_length - 3) + "..."; title->set_text(truncated_text); + } else { + title->set_text(title_text); } } @@ -1430,7 +1431,15 @@ void EditorAssetLibrary::_update_asset_items_columns() { asset_items->set_columns(new_columns); } - asset_items_column_width = (get_size().x / new_columns) - (100 * EDSCALE); + asset_items_column_width = (get_size().x / new_columns) - (120 * EDSCALE); + + for (int i = 0; i < asset_items->get_child_count(); i++) { + EditorAssetLibraryItem *item = Object::cast_to(asset_items->get_child(i)); + if (!item || !item->is_visible()) { + continue; + } + item->clamp_width(asset_items_column_width); + } } void EditorAssetLibrary::disable_community_support() { diff --git a/editor/plugins/asset_library_editor_plugin.h b/editor/plugins/asset_library_editor_plugin.h index 2dff1869ef2..2ec613d076f 100644 --- a/editor/plugins/asset_library_editor_plugin.h +++ b/editor/plugins/asset_library_editor_plugin.h @@ -63,6 +63,7 @@ class EditorAssetLibraryItem : public PanelContainer { TextureRect *stars[5]; Label *price = nullptr; + String title_text; int asset_id = 0; int category_id = 0; int author_id = 0;