You've already forked godot
							
							
				mirror of
				https://github.com/godotengine/godot.git
				synced 2025-11-03 11:50:27 +00:00 
			
		
		
		
	Fix author names not showing up in the AssetLib
This commit is contained in:
		@@ -65,6 +65,8 @@ void EditorAssetLibraryItem::configure(const String &p_title, int p_asset_id, co
 | 
			
		||||
	author->set_text(p_author);
 | 
			
		||||
	author_id = p_author_id;
 | 
			
		||||
	price->set_text(p_cost);
 | 
			
		||||
 | 
			
		||||
	_calculate_misc_links_size();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EditorAssetLibraryItem::set_image(int p_type, int p_index, const Ref<Texture2D> &p_image) {
 | 
			
		||||
@@ -87,10 +89,53 @@ void EditorAssetLibraryItem::_notification(int p_what) {
 | 
			
		||||
				author->add_theme_color_override("font_pressed_color", Color(0.5, 0.5, 0.5));
 | 
			
		||||
				author->add_theme_color_override("font_hover_color", Color(0.5, 0.5, 0.5));
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			calculate_misc_links_ratio();
 | 
			
		||||
		} break;
 | 
			
		||||
 | 
			
		||||
		case NOTIFICATION_THEME_CHANGED:
 | 
			
		||||
		case NOTIFICATION_TRANSLATION_CHANGED: {
 | 
			
		||||
			_calculate_misc_links_size();
 | 
			
		||||
			calculate_misc_links_ratio();
 | 
			
		||||
		} break;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EditorAssetLibraryItem::_calculate_misc_links_size() {
 | 
			
		||||
	Ref<TextLine> text_buf;
 | 
			
		||||
	text_buf.instantiate();
 | 
			
		||||
	text_buf->add_string(author->get_text(), author->get_button_font(), author->get_button_font_size());
 | 
			
		||||
	author_width = text_buf->get_line_width();
 | 
			
		||||
 | 
			
		||||
	text_buf->clear();
 | 
			
		||||
	const Ref<Font> font = get_theme_font(SceneStringName(font), SNAME("Label"));
 | 
			
		||||
	const int font_size = get_theme_font_size(SceneStringName(font_size), SNAME("Label"));
 | 
			
		||||
	text_buf->add_string(price->get_text(), font, font_size);
 | 
			
		||||
	price_width = text_buf->get_line_width();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EditorAssetLibraryItem::calculate_misc_links_ratio() {
 | 
			
		||||
	const int separators_width = 15 * EDSCALE;
 | 
			
		||||
	const float total_width = author_price_hbox->get_size().width - (separator->get_size().width + separators_width);
 | 
			
		||||
	if (total_width <= 0) {
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	float ratio_left = 1;
 | 
			
		||||
	// Make the ratios a fraction bigger, to avoid unnecessary trimming.
 | 
			
		||||
	const float extra_ratio = 4.0 / total_width;
 | 
			
		||||
 | 
			
		||||
	const float author_ratio = MIN(1, author_width / total_width);
 | 
			
		||||
	author->set_stretch_ratio(author_ratio + extra_ratio);
 | 
			
		||||
	ratio_left -= author_ratio;
 | 
			
		||||
 | 
			
		||||
	const float price_ratio = MIN(1, price_width / total_width);
 | 
			
		||||
	price->set_stretch_ratio(price_ratio + extra_ratio);
 | 
			
		||||
	ratio_left -= price_ratio;
 | 
			
		||||
 | 
			
		||||
	spacer->set_stretch_ratio(ratio_left);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EditorAssetLibraryItem::_asset_clicked() {
 | 
			
		||||
	emit_signal(SNAME("asset_selected"), asset_id);
 | 
			
		||||
}
 | 
			
		||||
@@ -144,7 +189,7 @@ EditorAssetLibraryItem::EditorAssetLibraryItem(bool p_clickable) {
 | 
			
		||||
	category->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
 | 
			
		||||
	vb->add_child(category);
 | 
			
		||||
 | 
			
		||||
	HBoxContainer *author_price_hbox = memnew(HBoxContainer);
 | 
			
		||||
	author_price_hbox = memnew(HBoxContainer);
 | 
			
		||||
	author_price_hbox->add_theme_constant_override("separation", 5 * EDSCALE);
 | 
			
		||||
	vb->add_child(author_price_hbox);
 | 
			
		||||
 | 
			
		||||
@@ -152,9 +197,11 @@ EditorAssetLibraryItem::EditorAssetLibraryItem(bool p_clickable) {
 | 
			
		||||
	author->set_tooltip_text(TTRC("Author"));
 | 
			
		||||
	author->set_text_overrun_behavior(TextServer::OVERRUN_TRIM_ELLIPSIS);
 | 
			
		||||
	author->set_accessibility_name(TTRC("Author"));
 | 
			
		||||
	author->set_h_size_flags(Control::SIZE_EXPAND_FILL);
 | 
			
		||||
	author_price_hbox->add_child(author);
 | 
			
		||||
 | 
			
		||||
	author_price_hbox->add_child(memnew(HSeparator));
 | 
			
		||||
	separator = memnew(HSeparator);
 | 
			
		||||
	author_price_hbox->add_child(separator);
 | 
			
		||||
 | 
			
		||||
	if (p_clickable) {
 | 
			
		||||
		author->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
 | 
			
		||||
@@ -178,11 +225,16 @@ EditorAssetLibraryItem::EditorAssetLibraryItem(bool p_clickable) {
 | 
			
		||||
	price->set_focus_mode(FOCUS_ACCESSIBILITY);
 | 
			
		||||
	price->add_theme_style_override(CoreStringName(normal), label_margin);
 | 
			
		||||
	price->set_tooltip_text(TTRC("License"));
 | 
			
		||||
	price->set_text_overrun_behavior(TextServer::OVERRUN_TRIM_ELLIPSIS);
 | 
			
		||||
	price->set_accessibility_name(TTRC("License"));
 | 
			
		||||
	price->set_h_size_flags(Control::SIZE_EXPAND_FILL);
 | 
			
		||||
	price->set_mouse_filter(MOUSE_FILTER_PASS);
 | 
			
		||||
 | 
			
		||||
	author_price_hbox->add_child(price);
 | 
			
		||||
 | 
			
		||||
	spacer = memnew(Control);
 | 
			
		||||
	spacer->set_h_size_flags(Control::SIZE_EXPAND_FILL);
 | 
			
		||||
	author_price_hbox->add_child(spacer);
 | 
			
		||||
 | 
			
		||||
	set_custom_minimum_size(Size2(250, 80) * EDSCALE);
 | 
			
		||||
	set_h_size_flags(Control::SIZE_EXPAND_FILL);
 | 
			
		||||
}
 | 
			
		||||
@@ -1386,6 +1438,7 @@ void EditorAssetLibrary::_http_request_completed(int p_status, int p_code, const
 | 
			
		||||
 | 
			
		||||
				EditorAssetLibraryItem *item = memnew(EditorAssetLibraryItem(true));
 | 
			
		||||
				asset_items->add_child(item);
 | 
			
		||||
				asset_items->connect(SceneStringName(sort_children), callable_mp(item, &EditorAssetLibraryItem::calculate_misc_links_ratio));
 | 
			
		||||
				item->configure(r["title"], r["asset_id"], category_map[r["category_id"]], r["category_id"], r["author"], r["author_id"], r["cost"]);
 | 
			
		||||
				item->connect("asset_selected", callable_mp(this, &EditorAssetLibrary::_select_asset));
 | 
			
		||||
				item->connect("author_selected", callable_mp(this, &EditorAssetLibrary::_select_author));
 | 
			
		||||
 
 | 
			
		||||
@@ -47,6 +47,7 @@
 | 
			
		||||
#include "scene/main/http_request.h"
 | 
			
		||||
 | 
			
		||||
class EditorFileDialog;
 | 
			
		||||
class HSeparator;
 | 
			
		||||
class MenuButton;
 | 
			
		||||
 | 
			
		||||
class EditorAssetLibraryItem : public PanelContainer {
 | 
			
		||||
@@ -57,16 +58,24 @@ class EditorAssetLibraryItem : public PanelContainer {
 | 
			
		||||
	LinkButton *category = nullptr;
 | 
			
		||||
	LinkButton *author = nullptr;
 | 
			
		||||
	Label *price = nullptr;
 | 
			
		||||
	HSeparator *separator = nullptr;
 | 
			
		||||
	Control *spacer = nullptr;
 | 
			
		||||
	HBoxContainer *author_price_hbox = nullptr;
 | 
			
		||||
 | 
			
		||||
	String title_text;
 | 
			
		||||
	int asset_id = 0;
 | 
			
		||||
	int category_id = 0;
 | 
			
		||||
	int author_id = 0;
 | 
			
		||||
 | 
			
		||||
	int author_width = 0;
 | 
			
		||||
	int price_width = 0;
 | 
			
		||||
 | 
			
		||||
	void _asset_clicked();
 | 
			
		||||
	void _category_clicked();
 | 
			
		||||
	void _author_clicked();
 | 
			
		||||
 | 
			
		||||
	void _calculate_misc_links_size();
 | 
			
		||||
 | 
			
		||||
	void set_image(int p_type, int p_index, const Ref<Texture2D> &p_image);
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
@@ -76,6 +85,8 @@ protected:
 | 
			
		||||
public:
 | 
			
		||||
	void 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 calculate_misc_links_ratio();
 | 
			
		||||
 | 
			
		||||
	EditorAssetLibraryItem(bool p_clickable = false);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -154,6 +154,10 @@ Ref<Font> LinkButton::get_button_font() const {
 | 
			
		||||
	return theme_cache.font;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int LinkButton::get_button_font_size() const {
 | 
			
		||||
	return theme_cache.font_size;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LinkButton::pressed() {
 | 
			
		||||
	if (uri.is_empty()) {
 | 
			
		||||
		return;
 | 
			
		||||
 
 | 
			
		||||
@@ -108,6 +108,7 @@ public:
 | 
			
		||||
	UnderlineMode get_underline_mode() const;
 | 
			
		||||
 | 
			
		||||
	Ref<Font> get_button_font() const;
 | 
			
		||||
	int get_button_font_size() const;
 | 
			
		||||
 | 
			
		||||
	LinkButton(const String &p_text = String());
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user