### 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
}
				}
			}
			Point2 mouse_position = get_viewport()->get_mouse_position() - get_global_position();
			if (scrolling && get_rect().grow(theme_cache.scroll_border).has_point(mouse_position)) {
				Point2 point;
				if ((ABS(mouse_position.x) < ABS(mouse_position.x - get_size().width)) && (ABS(mouse_position.x) < theme_cache.scroll_border)) {
					point.x = mouse_position.x - theme_cache.scroll_border;
				} else if (ABS(mouse_position.x - get_size().width) < theme_cache.scroll_border) {
					point.x = mouse_position.x - (get_size().width - theme_cache.scroll_border);
				}
				if ((ABS(mouse_position.y) < ABS(mouse_position.y - get_size().height)) && (ABS(mouse_position.y) < theme_cache.scroll_border)) {
					point.y = mouse_position.y - theme_cache.scroll_border;
				} else if (ABS(mouse_position.y - get_size().height) < theme_cache.scroll_border) {
					point.y = mouse_position.y - (get_size().height - theme_cache.scroll_border);
				}
				point *= theme_cache.scroll_speed * get_physics_process_delta_time();
				point += get_scroll();
				h_scroll->set_value(point.x);
				v_scroll->set_value(point.y);
			}
		} break;
		case NOTIFICATION_DRAW: {
			v_scroll->set_custom_step(theme_cache.font->get_height(theme_cache.font_size));
			update_scrollbars();
			RID ci = get_canvas_item();
			Ref<StyleBox> bg = theme_cache.panel_style;
			const Rect2 content_rect = _get_content_rect();
			Point2 draw_ofs = content_rect.position;
			Size2 draw_size = content_rect.size;