Fix bug where Control at origin with 0 size not rendered

Make a new method instead to make the code more elegant


Move Function down a bit


(cherry picked from commit e5cb557b73)
This commit is contained in:
nathanwfranke 2020-02-07 14:43:27 -06:00 committed by Rémi Verschelde
parent 63daa19538
commit 2d8289579a
2 changed files with 14 additions and 1 deletions

View file

@ -60,6 +60,19 @@ struct Rect2 {
return true; return true;
} }
inline bool intersects_touch(const Rect2 &p_rect) const {
if (position.x > (p_rect.position.x + p_rect.size.width))
return false;
if ((position.x + size.width) < p_rect.position.x)
return false;
if (position.y > (p_rect.position.y + p_rect.size.height))
return false;
if ((position.y + size.height) < p_rect.position.y)
return false;
return true;
}
inline real_t distance_to(const Vector2 &p_point) const { inline real_t distance_to(const Vector2 &p_point) const {
real_t dist = 0.0; real_t dist = 0.0;

View file

@ -168,7 +168,7 @@ void VisualServerCanvas::_render_canvas_item(Item *p_canvas_item, const Transfor
VisualServerRaster::redraw_request(); VisualServerRaster::redraw_request();
} }
if ((!ci->commands.empty() && p_clip_rect.intersects(global_rect)) || ci->vp_render || ci->copy_back_buffer) { if ((!ci->commands.empty() && p_clip_rect.intersects_touch(global_rect)) || ci->vp_render || ci->copy_back_buffer) {
//something to draw? //something to draw?
ci->final_transform = xform; ci->final_transform = xform;
ci->final_modulate = Color(modulate.r * ci->self_modulate.r, modulate.g * ci->self_modulate.g, modulate.b * ci->self_modulate.b, modulate.a * ci->self_modulate.a); ci->final_modulate = Color(modulate.r * ci->self_modulate.r, modulate.g * ci->self_modulate.g, modulate.b * ci->self_modulate.b, modulate.a * ci->self_modulate.a);