summaryrefslogtreecommitdiffstats
path: root/scene/main/viewport.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scene/main/viewport.cpp')
-rw-r--r--scene/main/viewport.cpp11
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);
}