diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-12-01 23:55:18 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-01 23:55:18 +0100 |
commit | 1bd7b0b269bdda4659d957d90c623735a4c22408 (patch) | |
tree | fcea0af4d5cfb4bebdfe2c41bfd85266f892d10a | |
parent | d47daf018747e623c65194a98a013a57f9a90164 (diff) | |
parent | 7129718dc571b9b94dc8eaa5fbab0c2b3b98d12a (diff) |
Merge pull request #69430 from Rindbee/fix-clip-contents
Fix child nodes still being drawn when the visible area of a control with `clip_contents` enabled is `0`
-rw-r--r-- | servers/rendering/renderer_canvas_cull.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/servers/rendering/renderer_canvas_cull.cpp b/servers/rendering/renderer_canvas_cull.cpp index 16d382a5f3..075a21b818 100644 --- a/servers/rendering/renderer_canvas_cull.cpp +++ b/servers/rendering/renderer_canvas_cull.cpp @@ -275,12 +275,12 @@ void RendererCanvasCull::_cull_canvas_item(Item *p_canvas_item, const Transform2 if (ci->clip) { if (p_canvas_clip != nullptr) { ci->final_clip_rect = p_canvas_clip->final_clip_rect.intersection(global_rect); - if (ci->final_clip_rect == Rect2()) { - // Clip rects do not intersect, so don't draw this item. - return; - } } else { - ci->final_clip_rect = global_rect; + ci->final_clip_rect = p_clip_rect.intersection(global_rect); + } + if (ci->final_clip_rect.size.width < 0.5 || ci->final_clip_rect.size.height < 0.5) { + // The clip rect area is 0, so don't draw the item. + return; } ci->final_clip_rect.position = ci->final_clip_rect.position.round(); ci->final_clip_rect.size = ci->final_clip_rect.size.round(); |