diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index 339d8cce19f2..45a8c48143a4 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -4219,14 +4219,20 @@ Tree::SelectMode Tree::get_select_mode() const { } void Tree::deselect_all() { - TreeItem *item = get_next_selected(get_root()); - while (item) { - for (int i = 0; i < columns.size(); i++) { - item->deselect(i); + if (root) { + TreeItem *item = root; + while (item) { + if (select_mode == SELECT_ROW) { + item->deselect(0); + } else { + for (int i = 0; i < columns.size(); i++) { + item->deselect(i); + } + } + TreeItem *prev_item = item; + item = get_next_selected(root); + ERR_FAIL_COND(item == prev_item); } - TreeItem *prev_item = item; - item = get_next_selected(get_root()); - ERR_FAIL_COND(item == prev_item); } selected_item = nullptr;