Merge pull request #109943 from kevinlam508/proper-tree-size-without-scrollbars

Fix tree to update size with scrollbars disabled
This commit is contained in:
Thaddeus Crews 2025-09-24 09:59:13 -05:00
commit 6f57447710
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC
2 changed files with 13 additions and 0 deletions

View file

@ -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();
}
@ -5208,6 +5210,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();
}
@ -5261,6 +5264,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;
}
@ -5595,6 +5606,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();
}

View file

@ -571,6 +571,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);