### Godot version

4.2 dev1

### System information

Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 (NVIDIA; 30.0.15.1403) - Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz (8 Threads)

### Issue description

Calling `Tree.propagate_check()` after an item is unchecked does not properly uncheck the parents. They are left in partially checked state.

It's easy to observe in theme editor:

https://github.com/godotengine/godot/assets/2223172/71d0479c-0a5e-48d3-957f-d90379a95c22



### Steps to reproduce

1. Edit a Theme resource
2. Go to Manage Items... menu
3. Go to Import Items tab
4. Unfold something
5. Check and uncheck a child checkbox

### Minimal reproduction project

N/A
}
			}
		}
		if (!p_item->disable_folding && !hide_folding && p_item->first_child && p_item->get_visible_child_count() != 0) { 
			Ref<Texture2D> arrow;
			if (p_item->collapsed) {
				if (is_layout_rtl()) {
					arrow = theme_cache.arrow_collapsed_mirrored;
				} else {
					arrow = theme_cache.arrow_collapsed;
				}
			} else {
				arrow = theme_cache.arrow;
			}
			Point2 apos = p_pos + Point2i(0, (label_h - arrow->get_height()) / 2) - theme_cache.offset + p_draw_ofs;
			apos.x += theme_cache.item_margin - arrow->get_width();
			if (rtl) {
				apos.x = get_size().width - apos.x - arrow->get_width();
			}
			arrow->draw(ci, apos);
		}
	}
	Point2 children_pos = p_pos;
	if (!skip) {
		children_pos.x += theme_cache.item_margin;
		htotal += label_h;
		children_pos.y += htotal;
	}
	if (!p_item->collapsed) { 
		TreeItem *c = p_item->first_child;