diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2021-05-09 14:40:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-09 14:40:50 +0200 |
commit | 726715b1e1bb4e642b3768bc33556bbd55734282 (patch) | |
tree | ae71ad4410da13acc04a857cb76c347a882cf774 /scene/gui | |
parent | 009674e5d5b8a72f48f83dea2d93eb5268eabed7 (diff) | |
parent | 63897f16b12d0f61a3c314a7a9836222c29bb646 (diff) |
Merge pull request #48579 from Calinou/tree-fix-bg-focus-section-overlap
Fix Tree's background focus outline displaying behind section headings
Diffstat (limited to 'scene/gui')
-rw-r--r-- | scene/gui/tree.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index d10ce584b7..7028d7aed4 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -3178,7 +3178,6 @@ void Tree::_notification(int p_what) { RID ci = get_canvas_item(); Ref<StyleBox> bg = cache.bg; - Ref<StyleBox> bg_focus = get_theme_stylebox("bg_focus"); Color font_outline_color = get_theme_color("font_outline_color"); int outline_size = get_theme_constant("outline_size"); @@ -3187,11 +3186,6 @@ void Tree::_notification(int p_what) { Size2 draw_size = get_size() - bg->get_minimum_size(); bg->draw(ci, Rect2(Point2(), get_size())); - if (has_focus()) { - RenderingServer::get_singleton()->canvas_item_add_clip_ignore(ci, true); - bg_focus->draw(ci, Rect2(Point2(), get_size())); - RenderingServer::get_singleton()->canvas_item_add_clip_ignore(ci, false); - } int tbh = _get_title_button_height(); @@ -3225,6 +3219,15 @@ void Tree::_notification(int p_what) { columns[i].text_buf->draw(ci, text_pos, cache.title_button_color); } } + + // Draw the background focus outline last, so that it is drawn in front of the section headings. + // Otherwise, section heading backgrounds can appear to be in front of the focus outline when scrolling. + if (has_focus()) { + RenderingServer::get_singleton()->canvas_item_add_clip_ignore(ci, true); + const Ref<StyleBox> bg_focus = get_theme_stylebox("bg_focus"); + bg_focus->draw(ci, Rect2(Point2(), get_size())); + RenderingServer::get_singleton()->canvas_item_add_clip_ignore(ci, false); + } } if (p_what == NOTIFICATION_THEME_CHANGED || p_what == NOTIFICATION_LAYOUT_DIRECTION_CHANGED || p_what == NOTIFICATION_TRANSLATION_CHANGED) { |