summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTechnoPorg <jonah.janzen@gmail.com>2021-11-29 16:36:47 -0700
committerTechnoPorg <jonah.janzen@gmail.com>2021-11-29 16:52:19 -0700
commitacb90ed0201f2964f3b870ad8a93d066cd77c8cf (patch)
treebf3ea6a77b9d253d9aff9b6194610f80f8a09ea3
parent9f46ce86523e01435ad34de467de586485448278 (diff)
Don't obtain a reference to a subwindow
Fixes the wrong location being accessed after changing the order of embedded windows. This commit also removes an unused variable.
-rw-r--r--scene/main/viewport.cpp4
-rw-r--r--scene/main/viewport.h3
2 files changed, 2 insertions, 5 deletions
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 31e8c20991..9962437284 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -370,8 +370,6 @@ void Viewport::_sub_window_remove(Window *p_window) {
void Viewport::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_ENTER_TREE: {
- gui.embedding_subwindows = gui.embed_subwindows_hint;
-
if (get_parent()) {
parent = get_parent()->get_viewport();
RenderingServer::get_singleton()->viewport_set_parent_viewport(viewport, parent->get_viewport_rid());
@@ -2540,7 +2538,7 @@ bool Viewport::_sub_windows_forward_input(const Ref<InputEvent> &p_event) {
if (mb.is_valid() && mb->is_pressed() && mb->get_button_index() == MOUSE_BUTTON_LEFT) {
bool click_on_window = false;
for (int i = gui.sub_windows.size() - 1; i >= 0; i--) {
- SubWindow &sw = gui.sub_windows.write[i];
+ SubWindow sw = gui.sub_windows.write[i];
// Clicked inside window?
diff --git a/scene/main/viewport.h b/scene/main/viewport.h
index 1f19ff04c9..d2e54bd4d3 100644
--- a/scene/main/viewport.h
+++ b/scene/main/viewport.h
@@ -349,7 +349,6 @@ private:
int canvas_sort_index = 0; //for sorting items with canvas as root
bool dragging = false;
bool embed_subwindows_hint = false;
- bool embedding_subwindows = false;
Window *subwindow_focused = nullptr;
SubWindowDrag subwindow_drag = SUB_WINDOW_DRAG_DISABLED;
@@ -360,7 +359,7 @@ private:
SubWindowResize subwindow_resize_mode;
Rect2i subwindow_resize_from_rect;
- Vector<SubWindow> sub_windows;
+ Vector<SubWindow> sub_windows; // Don't obtain references or pointers to the elements, as their location can change.
} gui;
DefaultCanvasItemTextureFilter default_canvas_item_texture_filter = DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR;