diff options
Diffstat (limited to 'scene/main/viewport.cpp')
-rw-r--r-- | scene/main/viewport.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 4d75e06ff9..1302e3c53e 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -309,7 +309,8 @@ void Viewport::_sub_window_update(Window *p_window) { int index = _sub_window_find(p_window); ERR_FAIL_COND(index == -1); - const SubWindow &sw = gui.sub_windows[index]; + SubWindow &sw = gui.sub_windows.write[index]; + sw.pending_window_update = false; Transform2D pos; pos.set_origin(p_window->get_position()); @@ -972,6 +973,14 @@ void Viewport::update_canvas_items() { return; } + if (is_embedding_subwindows()) { + for (Viewport::SubWindow w : gui.sub_windows) { + if (w.window && !w.pending_window_update) { + w.pending_window_update = true; + callable_mp(this, &Viewport::_sub_window_update).call_deferred(w.window); + } + } + } _update_canvas_items(this); } |