Fix minimum size of TreeItem
This commit is contained in:
parent
c7f67daccd
commit
53efc55409
@ -144,6 +144,7 @@ void TreeItem::_change_tree(Tree *p_tree) {
|
|||||||
/* cell mode */
|
/* cell mode */
|
||||||
void TreeItem::set_cell_mode(int p_column, TreeCellMode p_mode) {
|
void TreeItem::set_cell_mode(int p_column, TreeCellMode p_mode) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
Cell &c = cells.write[p_column];
|
Cell &c = cells.write[p_column];
|
||||||
c.mode = p_mode;
|
c.mode = p_mode;
|
||||||
c.min = 0;
|
c.min = 0;
|
||||||
@ -155,8 +156,9 @@ void TreeItem::set_cell_mode(int p_column, TreeCellMode p_mode) {
|
|||||||
c.text = "";
|
c.text = "";
|
||||||
c.dirty = true;
|
c.dirty = true;
|
||||||
c.icon_max_w = 0;
|
c.icon_max_w = 0;
|
||||||
|
c.cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TreeItem::TreeCellMode TreeItem::get_cell_mode(int p_column) const {
|
TreeItem::TreeCellMode TreeItem::get_cell_mode(int p_column) const {
|
||||||
@ -167,22 +169,27 @@ TreeItem::TreeCellMode TreeItem::get_cell_mode(int p_column) const {
|
|||||||
/* check mode */
|
/* check mode */
|
||||||
void TreeItem::set_checked(int p_column, bool p_checked) {
|
void TreeItem::set_checked(int p_column, bool p_checked) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
cells.write[p_column].checked = p_checked;
|
cells.write[p_column].checked = p_checked;
|
||||||
cells.write[p_column].indeterminate = false;
|
cells.write[p_column].indeterminate = false;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TreeItem::set_indeterminate(int p_column, bool p_indeterminate) {
|
void TreeItem::set_indeterminate(int p_column, bool p_indeterminate) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
// Prevent uncheck if indeterminate set to false twice
|
// Prevent uncheck if indeterminate set to false twice
|
||||||
if (p_indeterminate == cells[p_column].indeterminate) {
|
if (p_indeterminate == cells[p_column].indeterminate) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cells.write[p_column].indeterminate = p_indeterminate;
|
cells.write[p_column].indeterminate = p_indeterminate;
|
||||||
cells.write[p_column].checked = false;
|
cells.write[p_column].checked = false;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TreeItem::is_checked(int p_column) const {
|
bool TreeItem::is_checked(int p_column) const {
|
||||||
@ -214,8 +221,10 @@ void TreeItem::set_text(int p_column, String p_text) {
|
|||||||
}
|
}
|
||||||
cells.write[p_column].step = 0;
|
cells.write[p_column].step = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String TreeItem::get_text(int p_column) const {
|
String TreeItem::get_text(int p_column) const {
|
||||||
@ -231,7 +240,7 @@ void TreeItem::set_text_direction(int p_column, Control::TextDirection p_text_di
|
|||||||
cells.write[p_column].dirty = true;
|
cells.write[p_column].dirty = true;
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
}
|
}
|
||||||
cached_minimum_size_dirty = true;
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Control::TextDirection TreeItem::get_text_direction(int p_column) const {
|
Control::TextDirection TreeItem::get_text_direction(int p_column) const {
|
||||||
@ -241,10 +250,12 @@ Control::TextDirection TreeItem::get_text_direction(int p_column) const {
|
|||||||
|
|
||||||
void TreeItem::clear_opentype_features(int p_column) {
|
void TreeItem::clear_opentype_features(int p_column) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
cells.write[p_column].opentype_features.clear();
|
cells.write[p_column].opentype_features.clear();
|
||||||
cells.write[p_column].dirty = true;
|
cells.write[p_column].dirty = true;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TreeItem::set_opentype_feature(int p_column, const String &p_name, int p_value) {
|
void TreeItem::set_opentype_feature(int p_column, const String &p_name, int p_value) {
|
||||||
@ -253,8 +264,9 @@ void TreeItem::set_opentype_feature(int p_column, const String &p_name, int p_va
|
|||||||
if (!cells[p_column].opentype_features.has(tag) || (int)cells[p_column].opentype_features[tag] != p_value) {
|
if (!cells[p_column].opentype_features.has(tag) || (int)cells[p_column].opentype_features[tag] != p_value) {
|
||||||
cells.write[p_column].opentype_features[tag] = p_value;
|
cells.write[p_column].opentype_features[tag] = p_value;
|
||||||
cells.write[p_column].dirty = true;
|
cells.write[p_column].dirty = true;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,11 +281,13 @@ int TreeItem::get_opentype_feature(int p_column, const String &p_name) const {
|
|||||||
|
|
||||||
void TreeItem::set_structured_text_bidi_override(int p_column, Control::StructuredTextParser p_parser) {
|
void TreeItem::set_structured_text_bidi_override(int p_column, Control::StructuredTextParser p_parser) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
if (cells[p_column].st_parser != p_parser) {
|
if (cells[p_column].st_parser != p_parser) {
|
||||||
cells.write[p_column].st_parser = p_parser;
|
cells.write[p_column].st_parser = p_parser;
|
||||||
cells.write[p_column].dirty = true;
|
cells.write[p_column].dirty = true;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -284,10 +298,12 @@ Control::StructuredTextParser TreeItem::get_structured_text_bidi_override(int p_
|
|||||||
|
|
||||||
void TreeItem::set_structured_text_bidi_override_options(int p_column, Array p_args) {
|
void TreeItem::set_structured_text_bidi_override_options(int p_column, Array p_args) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
cells.write[p_column].st_args = p_args;
|
cells.write[p_column].st_args = p_args;
|
||||||
cells.write[p_column].dirty = true;
|
cells.write[p_column].dirty = true;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Array TreeItem::get_structured_text_bidi_override_options(int p_column) const {
|
Array TreeItem::get_structured_text_bidi_override_options(int p_column) const {
|
||||||
@ -297,11 +313,13 @@ Array TreeItem::get_structured_text_bidi_override_options(int p_column) const {
|
|||||||
|
|
||||||
void TreeItem::set_language(int p_column, const String &p_language) {
|
void TreeItem::set_language(int p_column, const String &p_language) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
if (cells[p_column].language != p_language) {
|
if (cells[p_column].language != p_language) {
|
||||||
cells.write[p_column].language = p_language;
|
cells.write[p_column].language = p_language;
|
||||||
cells.write[p_column].dirty = true;
|
cells.write[p_column].dirty = true;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,10 +330,11 @@ String TreeItem::get_language(int p_column) const {
|
|||||||
|
|
||||||
void TreeItem::set_suffix(int p_column, String p_suffix) {
|
void TreeItem::set_suffix(int p_column, String p_suffix) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
cells.write[p_column].suffix = p_suffix;
|
cells.write[p_column].suffix = p_suffix;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String TreeItem::get_suffix(int p_column) const {
|
String TreeItem::get_suffix(int p_column) const {
|
||||||
@ -325,9 +344,11 @@ String TreeItem::get_suffix(int p_column) const {
|
|||||||
|
|
||||||
void TreeItem::set_icon(int p_column, const Ref<Texture2D> &p_icon) {
|
void TreeItem::set_icon(int p_column, const Ref<Texture2D> &p_icon) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
cells.write[p_column].icon = p_icon;
|
cells.write[p_column].icon = p_icon;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<Texture2D> TreeItem::get_icon(int p_column) const {
|
Ref<Texture2D> TreeItem::get_icon(int p_column) const {
|
||||||
@ -337,9 +358,11 @@ Ref<Texture2D> TreeItem::get_icon(int p_column) const {
|
|||||||
|
|
||||||
void TreeItem::set_icon_region(int p_column, const Rect2 &p_icon_region) {
|
void TreeItem::set_icon_region(int p_column, const Rect2 &p_icon_region) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
cells.write[p_column].icon_region = p_icon_region;
|
cells.write[p_column].icon_region = p_icon_region;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Rect2 TreeItem::get_icon_region(int p_column) const {
|
Rect2 TreeItem::get_icon_region(int p_column) const {
|
||||||
@ -360,9 +383,11 @@ Color TreeItem::get_icon_modulate(int p_column) const {
|
|||||||
|
|
||||||
void TreeItem::set_icon_max_width(int p_column, int p_max) {
|
void TreeItem::set_icon_max_width(int p_column, int p_max) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
cells.write[p_column].icon_max_w = p_max;
|
cells.write[p_column].icon_max_w = p_max;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int TreeItem::get_icon_max_width(int p_column) const {
|
int TreeItem::get_icon_max_width(int p_column) const {
|
||||||
@ -474,8 +499,11 @@ void TreeItem::uncollapse_tree() {
|
|||||||
|
|
||||||
void TreeItem::set_custom_minimum_height(int p_height) {
|
void TreeItem::set_custom_minimum_height(int p_height) {
|
||||||
custom_min_height = p_height;
|
custom_min_height = p_height;
|
||||||
|
|
||||||
|
for (Cell &c : cells)
|
||||||
|
c.cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify();
|
_changed_notify();
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int TreeItem::get_custom_minimum_height() const {
|
int TreeItem::get_custom_minimum_height() const {
|
||||||
@ -799,8 +827,9 @@ void TreeItem::add_button(int p_column, const Ref<Texture2D> &p_button, int p_id
|
|||||||
button.disabled = p_disabled;
|
button.disabled = p_disabled;
|
||||||
button.tooltip = p_tooltip;
|
button.tooltip = p_tooltip;
|
||||||
cells.write[p_column].buttons.push_back(button);
|
cells.write[p_column].buttons.push_back(button);
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int TreeItem::get_button_count(int p_column) const {
|
int TreeItem::get_button_count(int p_column) const {
|
||||||
@ -843,8 +872,9 @@ void TreeItem::set_button(int p_column, int p_idx, const Ref<Texture2D> &p_butto
|
|||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
ERR_FAIL_INDEX(p_idx, cells[p_column].buttons.size());
|
ERR_FAIL_INDEX(p_idx, cells[p_column].buttons.size());
|
||||||
cells.write[p_column].buttons.write[p_idx].texture = p_button;
|
cells.write[p_column].buttons.write[p_idx].texture = p_button;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TreeItem::set_button_color(int p_column, int p_idx, const Color &p_color) {
|
void TreeItem::set_button_color(int p_column, int p_idx, const Color &p_color) {
|
||||||
@ -859,8 +889,9 @@ void TreeItem::set_button_disabled(int p_column, int p_idx, bool p_disabled) {
|
|||||||
ERR_FAIL_INDEX(p_idx, cells[p_column].buttons.size());
|
ERR_FAIL_INDEX(p_idx, cells[p_column].buttons.size());
|
||||||
|
|
||||||
cells.write[p_column].buttons.write[p_idx].disabled = p_disabled;
|
cells.write[p_column].buttons.write[p_idx].disabled = p_disabled;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TreeItem::is_button_disabled(int p_column, int p_idx) const {
|
bool TreeItem::is_button_disabled(int p_column, int p_idx) const {
|
||||||
@ -872,9 +903,11 @@ bool TreeItem::is_button_disabled(int p_column, int p_idx) const {
|
|||||||
|
|
||||||
void TreeItem::set_editable(int p_column, bool p_editable) {
|
void TreeItem::set_editable(int p_column, bool p_editable) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
cells.write[p_column].editable = p_editable;
|
cells.write[p_column].editable = p_editable;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TreeItem::is_editable(int p_column) {
|
bool TreeItem::is_editable(int p_column) {
|
||||||
@ -906,8 +939,9 @@ void TreeItem::clear_custom_color(int p_column) {
|
|||||||
|
|
||||||
void TreeItem::set_custom_font(int p_column, const Ref<Font> &p_font) {
|
void TreeItem::set_custom_font(int p_column, const Ref<Font> &p_font) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
cells.write[p_column].custom_font = p_font;
|
cells.write[p_column].custom_font = p_font;
|
||||||
cached_minimum_size_dirty = true;
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<Font> TreeItem::get_custom_font(int p_column) const {
|
Ref<Font> TreeItem::get_custom_font(int p_column) const {
|
||||||
@ -917,8 +951,9 @@ Ref<Font> TreeItem::get_custom_font(int p_column) const {
|
|||||||
|
|
||||||
void TreeItem::set_custom_font_size(int p_column, int p_font_size) {
|
void TreeItem::set_custom_font_size(int p_column, int p_font_size) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
cells.write[p_column].custom_font_size = p_font_size;
|
cells.write[p_column].custom_font_size = p_font_size;
|
||||||
cached_minimum_size_dirty = true;
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TreeItem::get_custom_font_size(int p_column) const {
|
int TreeItem::get_custom_font_size(int p_column) const {
|
||||||
@ -961,8 +996,9 @@ Color TreeItem::get_custom_bg_color(int p_column) const {
|
|||||||
|
|
||||||
void TreeItem::set_custom_as_button(int p_column, bool p_button) {
|
void TreeItem::set_custom_as_button(int p_column, bool p_button) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
cells.write[p_column].custom_button = p_button;
|
cells.write[p_column].custom_button = p_button;
|
||||||
cached_minimum_size_dirty = true;
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TreeItem::is_custom_set_as_button(int p_column) const {
|
bool TreeItem::is_custom_set_as_button(int p_column) const {
|
||||||
@ -972,9 +1008,11 @@ bool TreeItem::is_custom_set_as_button(int p_column) const {
|
|||||||
|
|
||||||
void TreeItem::set_text_align(int p_column, TextAlign p_align) {
|
void TreeItem::set_text_align(int p_column, TextAlign p_align) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
cells.write[p_column].text_align = p_align;
|
cells.write[p_column].text_align = p_align;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TreeItem::TextAlign TreeItem::get_text_align(int p_column) const {
|
TreeItem::TextAlign TreeItem::get_text_align(int p_column) const {
|
||||||
@ -984,9 +1022,11 @@ TreeItem::TextAlign TreeItem::get_text_align(int p_column) const {
|
|||||||
|
|
||||||
void TreeItem::set_expand_right(int p_column, bool p_enable) {
|
void TreeItem::set_expand_right(int p_column, bool p_enable) {
|
||||||
ERR_FAIL_INDEX(p_column, cells.size());
|
ERR_FAIL_INDEX(p_column, cells.size());
|
||||||
|
|
||||||
cells.write[p_column].expand_right = p_enable;
|
cells.write[p_column].expand_right = p_enable;
|
||||||
|
cells.write[p_column].cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(p_column);
|
_changed_notify(p_column);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TreeItem::get_expand_right(int p_column) const {
|
bool TreeItem::get_expand_right(int p_column) const {
|
||||||
@ -996,8 +1036,11 @@ bool TreeItem::get_expand_right(int p_column) const {
|
|||||||
|
|
||||||
void TreeItem::set_disable_folding(bool p_disable) {
|
void TreeItem::set_disable_folding(bool p_disable) {
|
||||||
disable_folding = p_disable;
|
disable_folding = p_disable;
|
||||||
|
|
||||||
|
for (Cell &c : cells)
|
||||||
|
c.cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
_changed_notify(0);
|
_changed_notify(0);
|
||||||
cached_minimum_size_dirty = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TreeItem::is_folding_disabled() const {
|
bool TreeItem::is_folding_disabled() const {
|
||||||
@ -1009,14 +1052,12 @@ Size2 TreeItem::get_minimum_size(int p_column) {
|
|||||||
Tree *tree = get_tree();
|
Tree *tree = get_tree();
|
||||||
ERR_FAIL_COND_V(!tree, Size2());
|
ERR_FAIL_COND_V(!tree, Size2());
|
||||||
|
|
||||||
if (cached_minimum_size_dirty) {
|
const TreeItem::Cell &cell = cells[p_column];
|
||||||
|
|
||||||
|
if (cell.cached_minimum_size_dirty) {
|
||||||
Size2 size;
|
Size2 size;
|
||||||
|
|
||||||
// Default offset?
|
|
||||||
//size.width += (disable_folding || tree->hide_folding) ? tree->cache.hseparation : tree->cache.item_margin;
|
|
||||||
|
|
||||||
// Text.
|
// Text.
|
||||||
const TreeItem::Cell &cell = cells[p_column];
|
|
||||||
if (!cell.text.is_empty()) {
|
if (!cell.text.is_empty()) {
|
||||||
if (cell.dirty) {
|
if (cell.dirty) {
|
||||||
tree->update_item_cell(this, p_column);
|
tree->update_item_cell(this, p_column);
|
||||||
@ -1052,11 +1093,11 @@ Size2 TreeItem::get_minimum_size(int p_column) {
|
|||||||
size.width += (cell.buttons.size() - 1) * tree->cache.button_margin;
|
size.width += (cell.buttons.size() - 1) * tree->cache.button_margin;
|
||||||
}
|
}
|
||||||
|
|
||||||
cached_minimum_size = size;
|
cells.write[p_column].cached_minimum_size = size;
|
||||||
cached_minimum_size_dirty = false;
|
cells.write[p_column].cached_minimum_size_dirty = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return cached_minimum_size;
|
return cell.cached_minimum_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
Variant TreeItem::_call_recursive_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
Variant TreeItem::_call_recursive_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||||
@ -1337,10 +1378,6 @@ void Tree::update_cache() {
|
|||||||
cache.title_button_color = get_theme_color(SNAME("title_button_color"));
|
cache.title_button_color = get_theme_color(SNAME("title_button_color"));
|
||||||
|
|
||||||
v_scroll->set_custom_step(cache.font->get_height(cache.font_size));
|
v_scroll->set_custom_step(cache.font->get_height(cache.font_size));
|
||||||
|
|
||||||
for (TreeItem *item = get_root(); item; item = item->get_next()) {
|
|
||||||
item->cached_minimum_size_dirty = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int Tree::compute_item_height(TreeItem *p_item) const {
|
int Tree::compute_item_height(TreeItem *p_item) const {
|
||||||
@ -4001,8 +4038,10 @@ TreeItem *Tree::get_next_selected(TreeItem *p_item) {
|
|||||||
int Tree::get_column_minimum_width(int p_column) const {
|
int Tree::get_column_minimum_width(int p_column) const {
|
||||||
ERR_FAIL_INDEX_V(p_column, columns.size(), -1);
|
ERR_FAIL_INDEX_V(p_column, columns.size(), -1);
|
||||||
|
|
||||||
|
// Use the custom minimum width.
|
||||||
int min_width = columns[p_column].custom_min_width;
|
int min_width = columns[p_column].custom_min_width;
|
||||||
|
|
||||||
|
// Check if the visible title of the column is wider.
|
||||||
if (show_column_titles) {
|
if (show_column_titles) {
|
||||||
min_width = MAX(cache.font->get_string_size(columns[p_column].title).width, min_width);
|
min_width = MAX(cache.font->get_string_size(columns[p_column].title).width, min_width);
|
||||||
}
|
}
|
||||||
@ -4029,7 +4068,11 @@ int Tree::get_column_minimum_width(int p_column) const {
|
|||||||
Size2 item_size = item->get_minimum_size(p_column);
|
Size2 item_size = item->get_minimum_size(p_column);
|
||||||
if (p_column == 0) {
|
if (p_column == 0) {
|
||||||
item_size.width += cache.item_margin * depth;
|
item_size.width += cache.item_margin * depth;
|
||||||
|
} else {
|
||||||
|
item_size.width += cache.hseparation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if the item is wider.
|
||||||
min_width = MAX(min_width, item_size.width);
|
min_width = MAX(min_width, item_size.width);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4069,9 +4112,6 @@ int Tree::get_column_width(int p_column) const {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p_column < columns.size() - 1) {
|
|
||||||
column_width += cache.hseparation;
|
|
||||||
}
|
|
||||||
return column_width;
|
return column_width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,6 +95,9 @@ private:
|
|||||||
bool expand_right = false;
|
bool expand_right = false;
|
||||||
Color icon_color = Color(1, 1, 1);
|
Color icon_color = Color(1, 1, 1);
|
||||||
|
|
||||||
|
Size2i cached_minimum_size;
|
||||||
|
bool cached_minimum_size_dirty = true;
|
||||||
|
|
||||||
TextAlign text_align = ALIGN_LEFT;
|
TextAlign text_align = ALIGN_LEFT;
|
||||||
|
|
||||||
Variant meta;
|
Variant meta;
|
||||||
@ -130,9 +133,6 @@ private:
|
|||||||
bool disable_folding = false;
|
bool disable_folding = false;
|
||||||
int custom_min_height = 0;
|
int custom_min_height = 0;
|
||||||
|
|
||||||
Size2i cached_minimum_size;
|
|
||||||
bool cached_minimum_size_dirty = true;
|
|
||||||
|
|
||||||
TreeItem *parent = nullptr; // parent item
|
TreeItem *parent = nullptr; // parent item
|
||||||
TreeItem *prev = nullptr; // previous in list
|
TreeItem *prev = nullptr; // previous in list
|
||||||
TreeItem *next = nullptr; // next in list
|
TreeItem *next = nullptr; // next in list
|
||||||
|
Loading…
Reference in New Issue
Block a user