Fix broken layout of asset library page

(cherry picked from commit c5cab60b90)
This commit is contained in:
Eugene Yang 2024-02-24 19:19:15 +08:00 committed by Rémi Verschelde
parent 3e968fd8ae
commit 3f4734c249
No known key found for this signature in database
GPG Key ID: C3336907360768E1
2 changed files with 18 additions and 8 deletions

View File

@ -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) { 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; asset_id = p_asset_id;
category->set_text(p_category); category->set_text(p_category);
category_id = p_category_id; 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. // TODO: Refactor this method to use the TextServer.
void EditorAssetLibraryItem::clamp_width(int p_max_width) { 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; int text_pixel_width = title->get_button_font()->get_string_size(title_text).x * EDSCALE;
String full_text = title->get_text();
title->set_tooltip_text(full_text);
if (text_pixel_width > p_max_width) { if (text_pixel_width > p_max_width) {
// Truncate title text to within the current column width. // Truncate title text to within the current column width.
int max_length = p_max_width / (text_pixel_width / full_text.length()); int max_length = p_max_width / (text_pixel_width / title_text.length());
String truncated_text = full_text.left(max_length - 3) + "..."; String truncated_text = title_text.left(max_length - 3) + "...";
title->set_text(truncated_text); 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->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<EditorAssetLibraryItem>(asset_items->get_child(i));
if (!item || !item->is_visible()) {
continue;
}
item->clamp_width(asset_items_column_width);
}
} }
void EditorAssetLibrary::disable_community_support() { void EditorAssetLibrary::disable_community_support() {

View File

@ -63,6 +63,7 @@ class EditorAssetLibraryItem : public PanelContainer {
TextureRect *stars[5]; TextureRect *stars[5];
Label *price = nullptr; Label *price = nullptr;
String title_text;
int asset_id = 0; int asset_id = 0;
int category_id = 0; int category_id = 0;
int author_id = 0; int author_id = 0;