瀏覽代碼

Merge pull request #71405 from marzecdawid/deselect-root-in-deselect_all

Fix `Tree::deselect_all` not deselecting root
Yuri Sizov 2 年之前
父節點
當前提交
c0301b74a1
共有 1 個文件被更改,包括 13 次插入7 次删除
  1. 13 7
      scene/gui/tree.cpp

+ 13 - 7
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;