From 1e749f628e6eda211ff29c81fae9e7a71b030bd9 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 9 Dec 2024 11:37:37 -0500 Subject: [PATCH] Fix user selection on top of `bgcolor` areas in a `RichTextLabel` --- scene/gui/rich_text_label.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index ea0b8cd8086..be54ef7c94e 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -1370,6 +1370,13 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o } } // Finish lines and boxes. + if (step == DRAW_STEP_BACKGROUND || step == DRAW_STEP_FOREGROUND) { + if (last_color.a > 0.0) { + Vector2 rect_off = p_ofs + Vector2(box_start - theme_cache.text_highlight_h_padding, off_step.y - l_ascent - theme_cache.text_highlight_v_padding); + Vector2 rect_size = Vector2(off_step.x - box_start + 2 * theme_cache.text_highlight_h_padding, l_size.y + 2 * theme_cache.text_highlight_v_padding); + RenderingServer::get_singleton()->canvas_item_add_rect(ci, Rect2(rect_off, rect_size), last_color); + } + } if (step == DRAW_STEP_BACKGROUND) { if (sel_start != -1) { Color selection_bg = theme_cache.selection_color; @@ -1380,13 +1387,6 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o } } } - if (step == DRAW_STEP_BACKGROUND || step == DRAW_STEP_FOREGROUND) { - if (last_color.a > 0.0) { - Vector2 rect_off = p_ofs + Vector2(box_start - theme_cache.text_highlight_h_padding, off_step.y - l_ascent - theme_cache.text_highlight_v_padding); - Vector2 rect_size = Vector2(off_step.x - box_start + 2 * theme_cache.text_highlight_h_padding, l_size.y + 2 * theme_cache.text_highlight_v_padding); - RenderingServer::get_singleton()->canvas_item_add_rect(ci, Rect2(rect_off, rect_size), last_color); - } - } if (step == DRAW_STEP_TEXT) { if (ul_started) { ul_started = false;