diff options
author | Rindbee <idleman@yeah.net> | 2022-07-20 21:43:40 +0800 |
---|---|---|
committer | Rindbee <idleman@yeah.net> | 2022-07-28 12:35:47 +0800 |
commit | fc17d3563dc8b851ecd6ea8ec66e7deb6f436771 (patch) | |
tree | 84bf9853d3be75c2d0c196bbacf7eec10f236327 | |
parent | eac22e3eb489b4a50bb274f10e8a8d4eb795fa99 (diff) |
Remove `first_draw` and reset visibility when entering tree
-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; |