mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 07:53:26 +00:00
Fix tree to update size with scrollbars disabled
When scrollbars are disabled, tree size is dependant on item sizes, so this adds missing checks for when to resize. The side effect of the bug was that scrollbars could incorrectly appear when items change at runtime.
This commit is contained in:
parent
3defc856b0
commit
4c9bd858c7
2 changed files with 13 additions and 0 deletions
|
@ -150,6 +150,7 @@ void TreeItem::_change_tree(Tree *p_tree) {
|
|||
tree->edited_item = nullptr;
|
||||
tree->pressing_for_editor = false;
|
||||
}
|
||||
tree->update_min_size_for_item_change();
|
||||
tree->queue_accessibility_update();
|
||||
tree->queue_redraw();
|
||||
}
|
||||
|
@ -880,6 +881,7 @@ TreeItem *TreeItem::create_child(int p_index) {
|
|||
TreeItem *ti = memnew(TreeItem(tree));
|
||||
if (tree) {
|
||||
ti->cells.resize(tree->columns.size());
|
||||
tree->update_min_size_for_item_change();
|
||||
tree->queue_accessibility_update();
|
||||
tree->queue_redraw();
|
||||
}
|
||||
|
@ -5199,6 +5201,7 @@ void Tree::item_changed(int p_column, TreeItem *p_item) {
|
|||
}
|
||||
p_item->accessibility_row_dirty = true;
|
||||
}
|
||||
update_min_size_for_item_change();
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
|
@ -5252,6 +5255,14 @@ void Tree::item_deselected(int p_column, TreeItem *p_item) {
|
|||
queue_redraw();
|
||||
}
|
||||
|
||||
void Tree::update_min_size_for_item_change() {
|
||||
// Only need to update when any scroll bar is disabled because that's the only time item size
|
||||
// affects tree size.
|
||||
if (!h_scroll_enabled || !v_scroll_enabled) {
|
||||
update_minimum_size();
|
||||
}
|
||||
}
|
||||
|
||||
void Tree::set_select_mode(SelectMode p_mode) {
|
||||
select_mode = p_mode;
|
||||
}
|
||||
|
@ -5586,6 +5597,7 @@ void Tree::set_columns(int p_columns) {
|
|||
selected_col = p_columns - 1;
|
||||
selected_button = -1;
|
||||
}
|
||||
update_min_size_for_item_change();
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
|
|
|
@ -570,6 +570,7 @@ private:
|
|||
void item_changed(int p_column, TreeItem *p_item);
|
||||
void item_selected(int p_column, TreeItem *p_item);
|
||||
void item_deselected(int p_column, TreeItem *p_item);
|
||||
void update_min_size_for_item_change();
|
||||
|
||||
void propagate_set_columns(TreeItem *p_item);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue