@@ -2444,22 +2444,22 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
24442444 if (p_item->cells [0 ].selected ) {
24452445 if (is_row_hovered) {
24462446 if (has_focus (true )) {
2447- theme_cache.hovered_selected_focus ->draw (ci , row_rect);
2447+ theme_cache.hovered_selected_focus ->draw (stylebox_ci , row_rect);
24482448 } else {
2449- theme_cache.hovered_selected ->draw (ci , row_rect);
2449+ theme_cache.hovered_selected ->draw (stylebox_ci , row_rect);
24502450 }
24512451 } else {
24522452 if (has_focus (true )) {
2453- theme_cache.selected_focus ->draw (ci , row_rect);
2453+ theme_cache.selected_focus ->draw (stylebox_ci , row_rect);
24542454 } else {
2455- theme_cache.selected ->draw (ci , row_rect);
2455+ theme_cache.selected ->draw (stylebox_ci , row_rect);
24562456 }
24572457 }
24582458 } else if (!drop_mode_flags) {
24592459 if (is_cell_button_hovered) {
2460- theme_cache.hovered_dimmed ->draw (ci , row_rect);
2460+ theme_cache.hovered_dimmed ->draw (stylebox_ci , row_rect);
24612461 } else {
2462- theme_cache.hovered ->draw (ci , row_rect);
2462+ theme_cache.hovered ->draw (stylebox_ci , row_rect);
24632463 }
24642464 }
24652465 }
@@ -2471,9 +2471,9 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
24712471 // Cell hover.
24722472 if (is_cell_hovered && !p_item->cells [i].selected && !drop_mode_flags) {
24732473 if (is_cell_button_hovered) {
2474- theme_cache.hovered_dimmed ->draw (ci , r);
2474+ theme_cache.hovered_dimmed ->draw (stylebox_ci , r);
24752475 } else {
2476- theme_cache.hovered ->draw (ci , r);
2476+ theme_cache.hovered ->draw (stylebox_ci , r);
24772477 }
24782478 }
24792479 }
@@ -2487,15 +2487,15 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
24872487 if (p_item->cells [i].selected ) {
24882488 if (is_cell_hovered) {
24892489 if (has_focus (true )) {
2490- theme_cache.hovered_selected_focus ->draw (ci , r);
2490+ theme_cache.hovered_selected_focus ->draw (stylebox_ci , r);
24912491 } else {
2492- theme_cache.hovered_selected ->draw (ci , r);
2492+ theme_cache.hovered_selected ->draw (stylebox_ci , r);
24932493 }
24942494 } else {
24952495 if (has_focus (true )) {
2496- theme_cache.selected_focus ->draw (ci , r);
2496+ theme_cache.selected_focus ->draw (stylebox_ci , r);
24972497 } else {
2498- theme_cache.selected ->draw (ci , r);
2498+ theme_cache.selected ->draw (stylebox_ci , r);
24992499 }
25002500 }
25012501 }
@@ -5231,6 +5231,14 @@ void Tree::_notification(int p_what) {
52315231 header_clip_rect.size .x = MAX (0 .0f , v_scroll_rect.position .x - header_clip_rect.position .x );
52325232 }
52335233 }
5234+ rendering_server->canvas_item_clear (stylebox_ci);
5235+ rendering_server->canvas_item_set_custom_rect (stylebox_ci, !is_visibility_clip_disabled (), main_clip_rect);
5236+ rendering_server->canvas_item_set_clip (stylebox_ci, true );
5237+
5238+ rendering_server->canvas_item_clear (custom_ci);
5239+ rendering_server->canvas_item_set_custom_rect (custom_ci, !is_visibility_clip_disabled (), main_clip_rect);
5240+ rendering_server->canvas_item_set_clip (custom_ci, true );
5241+
52345242 rendering_server->canvas_item_clear (header_ci);
52355243 rendering_server->canvas_item_set_custom_rect (header_ci, !is_visibility_clip_disabled (), header_clip_rect);
52365244 rendering_server->canvas_item_set_clip (header_ci, true );
@@ -5239,10 +5247,6 @@ void Tree::_notification(int p_what) {
52395247 rendering_server->canvas_item_set_custom_rect (content_ci, !is_visibility_clip_disabled (), main_clip_rect);
52405248 rendering_server->canvas_item_set_clip (content_ci, true );
52415249
5242- rendering_server->canvas_item_clear (custom_ci);
5243- rendering_server->canvas_item_set_custom_rect (custom_ci, !is_visibility_clip_disabled (), main_clip_rect);
5244- rendering_server->canvas_item_set_clip (custom_ci, true );
5245-
52465250 rendering_server->canvas_item_clear (drop_indicator_ci);
52475251 rendering_server->canvas_item_set_custom_rect (drop_indicator_ci, !is_visibility_clip_disabled (), main_clip_rect);
52485252 rendering_server->canvas_item_set_clip (drop_indicator_ci, true );
@@ -5558,6 +5562,8 @@ void Tree::set_self_modulate(const Color &p_self_modulate) {
55585562 CanvasItem::set_self_modulate (p_self_modulate);
55595563 RS::get_singleton ()->canvas_item_set_self_modulate (header_ci, p_self_modulate);
55605564 RS::get_singleton ()->canvas_item_set_self_modulate (content_ci, p_self_modulate);
5565+ RS::get_singleton ()->canvas_item_set_self_modulate (custom_ci, p_self_modulate);
5566+ RS::get_singleton ()->canvas_item_set_self_modulate (stylebox_ci, p_self_modulate);
55615567}
55625568
55635569void Tree::_update_all () {
@@ -7429,6 +7435,14 @@ Tree::Tree() {
74297435
74307436 RenderingServer *rs = RenderingServer::get_singleton ();
74317437
7438+ stylebox_ci = rs->canvas_item_create ();
7439+ rs->canvas_item_set_parent (stylebox_ci, get_canvas_item ());
7440+ rs->canvas_item_set_use_parent_material (stylebox_ci, true );
7441+
7442+ custom_ci = rs->canvas_item_create ();
7443+ rs->canvas_item_set_parent (custom_ci, get_canvas_item ());
7444+ rs->canvas_item_set_use_parent_material (custom_ci, true );
7445+
74327446 content_ci = rs->canvas_item_create ();
74337447 rs->canvas_item_set_parent (content_ci, get_canvas_item ());
74347448 rs->canvas_item_set_use_parent_material (content_ci, true );
@@ -7437,10 +7451,6 @@ Tree::Tree() {
74377451 rs->canvas_item_set_parent (header_ci, get_canvas_item ());
74387452 rs->canvas_item_set_use_parent_material (header_ci, true );
74397453
7440- custom_ci = rs->canvas_item_create ();
7441- rs->canvas_item_set_parent (custom_ci, get_canvas_item ());
7442- rs->canvas_item_set_use_parent_material (custom_ci, true );
7443-
74447454 drop_indicator_ci = rs->canvas_item_create ();
74457455 rs->canvas_item_set_parent (drop_indicator_ci, get_canvas_item ());
74467456 rs->canvas_item_set_use_parent_material (drop_indicator_ci, true );
@@ -7500,4 +7510,6 @@ Tree::~Tree() {
75007510 RenderingServer::get_singleton ()->free_rid (content_ci);
75017511 RenderingServer::get_singleton ()->free_rid (custom_ci);
75027512 RenderingServer::get_singleton ()->free_rid (header_ci);
7513+ RenderingServer::get_singleton ()->free_rid (custom_ci);
7514+ RenderingServer::get_singleton ()->free_rid (stylebox_ci);
75037515}
0 commit comments