You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +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->set_text(p_author);
|
||||||
author_id = p_author_id;
|
author_id = p_author_id;
|
||||||
price->set_text(p_cost);
|
price->set_text(p_cost);
|
||||||
|
|
||||||
|
_calculate_misc_links_size();
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorAssetLibraryItem::set_image(int p_type, int p_index, const Ref<Texture2D> &p_image) {
|
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_pressed_color", Color(0.5, 0.5, 0.5));
|
||||||
author->add_theme_color_override("font_hover_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;
|
} 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() {
|
void EditorAssetLibraryItem::_asset_clicked() {
|
||||||
emit_signal(SNAME("asset_selected"), asset_id);
|
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);
|
category->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
|
||||||
vb->add_child(category);
|
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);
|
author_price_hbox->add_theme_constant_override("separation", 5 * EDSCALE);
|
||||||
vb->add_child(author_price_hbox);
|
vb->add_child(author_price_hbox);
|
||||||
|
|
||||||
@@ -152,9 +197,11 @@ EditorAssetLibraryItem::EditorAssetLibraryItem(bool p_clickable) {
|
|||||||
author->set_tooltip_text(TTRC("Author"));
|
author->set_tooltip_text(TTRC("Author"));
|
||||||
author->set_text_overrun_behavior(TextServer::OVERRUN_TRIM_ELLIPSIS);
|
author->set_text_overrun_behavior(TextServer::OVERRUN_TRIM_ELLIPSIS);
|
||||||
author->set_accessibility_name(TTRC("Author"));
|
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(author);
|
||||||
|
|
||||||
author_price_hbox->add_child(memnew(HSeparator));
|
separator = memnew(HSeparator);
|
||||||
|
author_price_hbox->add_child(separator);
|
||||||
|
|
||||||
if (p_clickable) {
|
if (p_clickable) {
|
||||||
author->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
|
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->set_focus_mode(FOCUS_ACCESSIBILITY);
|
||||||
price->add_theme_style_override(CoreStringName(normal), label_margin);
|
price->add_theme_style_override(CoreStringName(normal), label_margin);
|
||||||
price->set_tooltip_text(TTRC("License"));
|
price->set_tooltip_text(TTRC("License"));
|
||||||
|
price->set_text_overrun_behavior(TextServer::OVERRUN_TRIM_ELLIPSIS);
|
||||||
price->set_accessibility_name(TTRC("License"));
|
price->set_accessibility_name(TTRC("License"));
|
||||||
|
price->set_h_size_flags(Control::SIZE_EXPAND_FILL);
|
||||||
price->set_mouse_filter(MOUSE_FILTER_PASS);
|
price->set_mouse_filter(MOUSE_FILTER_PASS);
|
||||||
|
|
||||||
author_price_hbox->add_child(price);
|
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_custom_minimum_size(Size2(250, 80) * EDSCALE);
|
||||||
set_h_size_flags(Control::SIZE_EXPAND_FILL);
|
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));
|
EditorAssetLibraryItem *item = memnew(EditorAssetLibraryItem(true));
|
||||||
asset_items->add_child(item);
|
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->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("asset_selected", callable_mp(this, &EditorAssetLibrary::_select_asset));
|
||||||
item->connect("author_selected", callable_mp(this, &EditorAssetLibrary::_select_author));
|
item->connect("author_selected", callable_mp(this, &EditorAssetLibrary::_select_author));
|
||||||
|
|||||||
@@ -47,6 +47,7 @@
|
|||||||
#include "scene/main/http_request.h"
|
#include "scene/main/http_request.h"
|
||||||
|
|
||||||
class EditorFileDialog;
|
class EditorFileDialog;
|
||||||
|
class HSeparator;
|
||||||
class MenuButton;
|
class MenuButton;
|
||||||
|
|
||||||
class EditorAssetLibraryItem : public PanelContainer {
|
class EditorAssetLibraryItem : public PanelContainer {
|
||||||
@@ -57,16 +58,24 @@ class EditorAssetLibraryItem : public PanelContainer {
|
|||||||
LinkButton *category = nullptr;
|
LinkButton *category = nullptr;
|
||||||
LinkButton *author = nullptr;
|
LinkButton *author = nullptr;
|
||||||
Label *price = nullptr;
|
Label *price = nullptr;
|
||||||
|
HSeparator *separator = nullptr;
|
||||||
|
Control *spacer = nullptr;
|
||||||
|
HBoxContainer *author_price_hbox = nullptr;
|
||||||
|
|
||||||
String title_text;
|
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;
|
||||||
|
|
||||||
|
int author_width = 0;
|
||||||
|
int price_width = 0;
|
||||||
|
|
||||||
void _asset_clicked();
|
void _asset_clicked();
|
||||||
void _category_clicked();
|
void _category_clicked();
|
||||||
void _author_clicked();
|
void _author_clicked();
|
||||||
|
|
||||||
|
void _calculate_misc_links_size();
|
||||||
|
|
||||||
void set_image(int p_type, int p_index, const Ref<Texture2D> &p_image);
|
void set_image(int p_type, int p_index, const Ref<Texture2D> &p_image);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -76,6 +85,8 @@ protected:
|
|||||||
public:
|
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 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);
|
EditorAssetLibraryItem(bool p_clickable = false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -154,6 +154,10 @@ Ref<Font> LinkButton::get_button_font() const {
|
|||||||
return theme_cache.font;
|
return theme_cache.font;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int LinkButton::get_button_font_size() const {
|
||||||
|
return theme_cache.font_size;
|
||||||
|
}
|
||||||
|
|
||||||
void LinkButton::pressed() {
|
void LinkButton::pressed() {
|
||||||
if (uri.is_empty()) {
|
if (uri.is_empty()) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ public:
|
|||||||
UnderlineMode get_underline_mode() const;
|
UnderlineMode get_underline_mode() const;
|
||||||
|
|
||||||
Ref<Font> get_button_font() const;
|
Ref<Font> get_button_font() const;
|
||||||
|
int get_button_font_size() const;
|
||||||
|
|
||||||
LinkButton(const String &p_text = String());
|
LinkButton(const String &p_text = String());
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user