You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
[RTL] Add cell option to control if cell is shrinked to its contents width.
This commit is contained in:
@@ -776,7 +776,7 @@ void GDExtensionSpecialCompatHashes::initialize() {
|
||||
{ "push_paragraph", 3218895358, 3089306873 },
|
||||
{ "push_list", 4036303897, 3017143144 },
|
||||
{ "push_table", 1125058220, 2623499273 },
|
||||
{ "set_table_column_expand", 4132157579, 2185176273 },
|
||||
{ "set_table_column_expand", 4258957458, 2185176273 },
|
||||
#ifdef REAL_T_IS_DOUBLE
|
||||
{ "add_image", 3346058748, 1507062345 },
|
||||
{ "push_dropcap", 981432822, 763534173 },
|
||||
|
||||
@@ -597,6 +597,7 @@
|
||||
<param index="0" name="column" type="int" />
|
||||
<param index="1" name="expand" type="bool" />
|
||||
<param index="2" name="ratio" type="int" default="1" />
|
||||
<param index="3" name="shrink" type="bool" default="true" />
|
||||
<description>
|
||||
Edits the selected column's expansion options. If [param expand] is [code]true[/code], the column expands in proportion to its expansion ratio versus the other columns' ratios.
|
||||
For example, 2 columns with ratios 3 and 4 plus 70 pixels in available width would expand 30 and 40 pixels, respectively.
|
||||
|
||||
@@ -278,3 +278,10 @@ Validate extension JSON: JSON file: Field was added in a way that breaks compati
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/GPUParticles3D/methods/restart': arguments
|
||||
|
||||
Added an optional keep_seed parameter to restart particles, to avoid modifying the seed to do particle seeking.
|
||||
|
||||
|
||||
GH-101482
|
||||
---------
|
||||
Validate extension JSON: Error: Field 'classes/RichTextLabel/methods/set_table_column_expand/arguments': size changed value in new API, from 3 to 4.
|
||||
|
||||
Added optional "shrink" argument. Compatibility method registered.
|
||||
|
||||
@@ -30,6 +30,18 @@
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
|
||||
void RichTextLabel::_push_font_bind_compat_79053(const Ref<Font> &p_font, int p_size) {
|
||||
push_font(p_font, p_size);
|
||||
}
|
||||
|
||||
void RichTextLabel::_set_table_column_expand_bind_compat_79053(int p_column, bool p_expand, int p_ratio) {
|
||||
set_table_column_expand(p_column, p_expand, p_ratio, true);
|
||||
}
|
||||
|
||||
void RichTextLabel::_set_table_column_expand_bind_compat_101482(int p_column, bool p_expand, int p_ratio) {
|
||||
set_table_column_expand(p_column, p_expand, p_ratio, true);
|
||||
}
|
||||
|
||||
void RichTextLabel::_push_meta_bind_compat_99481(const Variant &p_meta, MetaUnderline p_underline_mode) {
|
||||
push_meta(p_meta, p_underline_mode, String());
|
||||
}
|
||||
@@ -47,6 +59,9 @@ bool RichTextLabel::_remove_paragraph_bind_compat_91098(int p_paragraph) {
|
||||
}
|
||||
|
||||
void RichTextLabel::_bind_compatibility_methods() {
|
||||
ClassDB::bind_compatibility_method(D_METHOD("push_font", "font", "font_size"), &RichTextLabel::_push_font_bind_compat_79053);
|
||||
ClassDB::bind_compatibility_method(D_METHOD("set_table_column_expand", "column", "expand", "ratio"), &RichTextLabel::_set_table_column_expand_bind_compat_79053);
|
||||
ClassDB::bind_compatibility_method(D_METHOD("set_table_column_expand", "column", "expand", "ratio"), &RichTextLabel::_set_table_column_expand_bind_compat_101482, DEFVAL(1));
|
||||
ClassDB::bind_compatibility_method(D_METHOD("push_meta", "data", "underline_mode"), &RichTextLabel::_push_meta_bind_compat_99481, DEFVAL(META_UNDERLINE_ALWAYS));
|
||||
ClassDB::bind_compatibility_method(D_METHOD("push_meta", "data"), &RichTextLabel::_push_meta_bind_compat_89024);
|
||||
ClassDB::bind_compatibility_method(D_METHOD("add_image", "image", "width", "height", "color", "inline_align", "region"), &RichTextLabel::_add_image_bind_compat_80410, DEFVAL(0), DEFVAL(0), DEFVAL(Color(1.0, 1.0, 1.0)), DEFVAL(INLINE_ALIGNMENT_CENTER), DEFVAL(Rect2()));
|
||||
|
||||
@@ -693,7 +693,7 @@ void RichTextLabel::_set_table_size(ItemTable *p_table, int p_available_width) {
|
||||
table_need_fit = false;
|
||||
// Fit slim.
|
||||
for (int i = 0; i < col_count; i++) {
|
||||
if (!p_table->columns[i].expand) {
|
||||
if (!p_table->columns[i].expand || !p_table->columns[i].shrink) {
|
||||
continue;
|
||||
}
|
||||
int dif = p_table->columns[i].width - p_table->columns[i].max_width;
|
||||
@@ -3900,6 +3900,7 @@ void RichTextLabel::push_table(int p_columns, InlineAlignment p_alignment, int p
|
||||
item->align_to_row = p_align_to_row;
|
||||
for (int i = 0; i < (int)item->columns.size(); i++) {
|
||||
item->columns[i].expand = false;
|
||||
item->columns[i].shrink = true;
|
||||
item->columns[i].expand_ratio = 1;
|
||||
}
|
||||
_add_item(item, true, false);
|
||||
@@ -4038,7 +4039,7 @@ void RichTextLabel::push_context() {
|
||||
_add_item(item, true);
|
||||
}
|
||||
|
||||
void RichTextLabel::set_table_column_expand(int p_column, bool p_expand, int p_ratio) {
|
||||
void RichTextLabel::set_table_column_expand(int p_column, bool p_expand, int p_ratio, bool p_shrink) {
|
||||
_stop_thread();
|
||||
MutexLock data_lock(data_mutex);
|
||||
|
||||
@@ -4047,6 +4048,7 @@ void RichTextLabel::set_table_column_expand(int p_column, bool p_expand, int p_r
|
||||
ItemTable *table = static_cast<ItemTable *>(current);
|
||||
ERR_FAIL_INDEX(p_column, (int)table->columns.size());
|
||||
table->columns[p_column].expand = p_expand;
|
||||
table->columns[p_column].shrink = p_shrink;
|
||||
table->columns[p_column].expand_ratio = p_ratio;
|
||||
}
|
||||
|
||||
@@ -4582,13 +4584,19 @@ void RichTextLabel::append_text(const String &p_bbcode) {
|
||||
pos = brk_end + 1;
|
||||
tag_stack.push_front("cell");
|
||||
} else if (tag.begins_with("cell ")) {
|
||||
bool shrink = true;
|
||||
OptionMap::Iterator shrink_option = bbcode_options.find("shrink");
|
||||
if (shrink_option) {
|
||||
shrink = (shrink_option->value == "true");
|
||||
}
|
||||
|
||||
OptionMap::Iterator expand_option = bbcode_options.find("expand");
|
||||
if (expand_option) {
|
||||
int ratio = expand_option->value.to_int();
|
||||
if (ratio < 1) {
|
||||
ratio = 1;
|
||||
}
|
||||
set_table_column_expand(get_current_table_column(), true, ratio);
|
||||
set_table_column_expand(get_current_table_column(), true, ratio, shrink);
|
||||
}
|
||||
|
||||
push_cell();
|
||||
@@ -6429,7 +6437,7 @@ void RichTextLabel::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("push_strikethrough"), &RichTextLabel::push_strikethrough);
|
||||
ClassDB::bind_method(D_METHOD("push_table", "columns", "inline_align", "align_to_row"), &RichTextLabel::push_table, DEFVAL(INLINE_ALIGNMENT_TOP), DEFVAL(-1));
|
||||
ClassDB::bind_method(D_METHOD("push_dropcap", "string", "font", "size", "dropcap_margins", "color", "outline_size", "outline_color"), &RichTextLabel::push_dropcap, DEFVAL(Rect2()), DEFVAL(Color(1, 1, 1)), DEFVAL(0), DEFVAL(Color(0, 0, 0, 0)));
|
||||
ClassDB::bind_method(D_METHOD("set_table_column_expand", "column", "expand", "ratio"), &RichTextLabel::set_table_column_expand, DEFVAL(1));
|
||||
ClassDB::bind_method(D_METHOD("set_table_column_expand", "column", "expand", "ratio", "shrink"), &RichTextLabel::set_table_column_expand, DEFVAL(1), DEFVAL(true));
|
||||
ClassDB::bind_method(D_METHOD("set_cell_row_background_color", "odd_row_bg", "even_row_bg"), &RichTextLabel::set_cell_row_background_color);
|
||||
ClassDB::bind_method(D_METHOD("set_cell_border_color", "color"), &RichTextLabel::set_cell_border_color);
|
||||
ClassDB::bind_method(D_METHOD("set_cell_size_override", "min_size", "max_size"), &RichTextLabel::set_cell_size_override);
|
||||
@@ -6568,11 +6576,6 @@ void RichTextLabel::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("is_menu_visible"), &RichTextLabel::is_menu_visible);
|
||||
ClassDB::bind_method(D_METHOD("menu_option", "option"), &RichTextLabel::menu_option);
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
ClassDB::bind_compatibility_method(D_METHOD("push_font", "font", "font_size"), &RichTextLabel::push_font);
|
||||
ClassDB::bind_compatibility_method(D_METHOD("set_table_column_expand", "column", "expand", "ratio"), &RichTextLabel::set_table_column_expand);
|
||||
#endif // DISABLE_DEPRECATED
|
||||
|
||||
// Note: set "bbcode_enabled" first, to avoid unnecessary "text" resets.
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "bbcode_enabled"), "set_use_bbcode", "is_using_bbcode");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "text", PROPERTY_HINT_MULTILINE_TEXT), "set_text", "get_text");
|
||||
|
||||
@@ -132,10 +132,13 @@ protected:
|
||||
static void _bind_methods();
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
void _push_font_bind_compat_79053(const Ref<Font> &p_font, int p_size);
|
||||
void _set_table_column_expand_bind_compat_79053(int p_column, bool p_expand, int p_ratio);
|
||||
void _push_meta_bind_compat_99481(const Variant &p_meta, MetaUnderline p_underline_mode);
|
||||
void _push_meta_bind_compat_89024(const Variant &p_meta);
|
||||
void _add_image_bind_compat_80410(const Ref<Texture2D> &p_image, const int p_width, const int p_height, const Color &p_color, InlineAlignment p_alignment, const Rect2 &p_region);
|
||||
bool _remove_paragraph_bind_compat_91098(int p_paragraph);
|
||||
void _set_table_column_expand_bind_compat_101482(int p_column, bool p_expand, int p_ratio);
|
||||
static void _bind_compatibility_methods();
|
||||
#endif
|
||||
|
||||
@@ -339,6 +342,7 @@ private:
|
||||
struct ItemTable : public Item {
|
||||
struct Column {
|
||||
bool expand = false;
|
||||
bool shrink = true;
|
||||
int expand_ratio = 0;
|
||||
int min_width = 0;
|
||||
int max_width = 0;
|
||||
@@ -724,7 +728,7 @@ public:
|
||||
void push_fgcolor(const Color &p_color);
|
||||
void push_customfx(Ref<RichTextEffect> p_custom_effect, Dictionary p_environment);
|
||||
void push_context();
|
||||
void set_table_column_expand(int p_column, bool p_expand, int p_ratio = 1);
|
||||
void set_table_column_expand(int p_column, bool p_expand, int p_ratio = 1, bool p_shrink = true);
|
||||
void set_cell_row_background_color(const Color &p_odd_row_bg, const Color &p_even_row_bg);
|
||||
void set_cell_border_color(const Color &p_color);
|
||||
void set_cell_size_override(const Size2 &p_min_size, const Size2 &p_max_size);
|
||||
|
||||
Reference in New Issue
Block a user