diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-07-28 09:23:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-28 09:23:47 +0200 |
commit | 9a81b129f6d09b818e741e5c314f1fbd84fd8ff8 (patch) | |
tree | cd6815ed1a34642ae63e760975e2ee030d3e4993 | |
parent | 422725cffc8d139200b20219c5689ba981244ba6 (diff) | |
parent | fc17d3563dc8b851ecd6ea8ec66e7deb6f436771 (diff) |
Merge pull request #63248 from Rindbee/reselect-the-timing-of-first_draw
-rw-r--r-- | scene/main/canvas_item.cpp | 12 | ||||
-rw-r--r-- | scene/main/canvas_item.h | 1 |
2 files changed, 4 insertions, 9 deletions
diff --git a/scene/main/canvas_item.cpp b/scene/main/canvas_item.cpp index e298805aca..ce204c6aeb 100644 --- a/scene/main/canvas_item.cpp +++ b/scene/main/canvas_item.cpp @@ -64,9 +64,6 @@ void CanvasItem::_propagate_visibility_changed(bool p_parent_visible_in_tree) { if (!visible) { return; } - if (p_parent_visible_in_tree && first_draw) { // Avoid propagating it twice. - first_draw = false; - } _handle_visibility_change(p_parent_visible_in_tree); } @@ -133,10 +130,6 @@ void CanvasItem::_update_callback() { RenderingServer::get_singleton()->canvas_item_clear(get_canvas_item()); //todo updating = true - only allow drawing here if (is_visible_in_tree()) { - if (first_draw) { - notification(NOTIFICATION_VISIBILITY_CHANGED); - first_draw = false; - } drawing = true; current_item_drawn = this; notification(NOTIFICATION_DRAW); @@ -268,7 +261,6 @@ void CanvasItem::_notification(int p_what) { switch (p_what) { case NOTIFICATION_ENTER_TREE: { ERR_FAIL_COND(!is_inside_tree()); - first_draw = true; Node *parent = get_parent(); if (parent) { @@ -307,6 +299,10 @@ void CanvasItem::_notification(int p_what) { } } + RenderingServer::get_singleton()->canvas_item_set_visible(canvas_item, is_visible_in_tree()); // The visibility of the parent may change. + if (is_visible_in_tree()) { + notification(NOTIFICATION_VISIBILITY_CHANGED); // Considered invisible until entered. + } _enter_canvas(); _update_texture_filter_changed(false); diff --git a/scene/main/canvas_item.h b/scene/main/canvas_item.h index f5df6512ee..38e0be1683 100644 --- a/scene/main/canvas_item.h +++ b/scene/main/canvas_item.h @@ -83,7 +83,6 @@ private: int light_mask = 1; Window *window = nullptr; - bool first_draw = false; bool visible = true; bool parent_visible_in_tree = false; bool clip_children = false; |