Skip to content

Commit 2a8240b

Browse files
committed
Merge pull request godotengine#107182 from stuartcarnie/107066_fix_embedded
Editor: Fix multi-instance behavior with embedded game view
2 parents dea3269 + afd82d7 commit 2a8240b

File tree

3 files changed

+8
-4
lines changed

3 files changed

+8
-4
lines changed

editor/plugins/game_view_plugin.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -794,11 +794,8 @@ void GameView::_update_floating_window_settings() {
794794
}
795795

796796
void GameView::_attach_script_debugger() {
797-
if (embedded_script_debugger) {
798-
_detach_script_debugger();
799-
}
797+
_detach_script_debugger();
800798

801-
embedded_script_debugger = nullptr;
802799
int i = 0;
803800
while (ScriptEditorDebugger *script_debugger = EditorDebuggerNode::get_singleton()->get_debugger(i)) {
804801
if (script_debugger->is_session_active() && script_debugger->get_remote_pid() == embedded_process->get_embedded_pid()) {
@@ -824,6 +821,7 @@ void GameView::_detach_script_debugger() {
824821
embedded_script_debugger->disconnect("embed_shortcut_requested", callable_mp(this, &GameView::_handle_shortcut_requested));
825822
embedded_script_debugger = nullptr;
826823
}
824+
embedded_process->set_script_debugger(nullptr);
827825
}
828826

829827
void GameView::_remote_window_title_changed(String title) {
@@ -913,6 +911,10 @@ void GameView::_update_arguments_for_instance(int p_idx, List<String> &r_argumen
913911
}
914912

915913
void GameView::_window_close_request() {
914+
if (window_wrapper->get_window_enabled()) {
915+
window_wrapper->set_window_enabled(false);
916+
}
917+
916918
// Before the parent window closed, we close the embedded game. That prevents
917919
// the embedded game to be seen without a parent window for a fraction of second.
918920
if (EditorRunBar::get_singleton()->is_playing() && (embedded_process->is_embedding_completed() || embedded_process->is_embedding_in_progress())) {

platform/macos/editor/embedded_process_macos.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class EmbeddedProcessMacOS final : public EmbeddedProcessBase {
6262
IN_PROGRESS,
6363
COMPLETED,
6464
FAILED,
65+
CLOSED,
6566
};
6667

6768
DisplayServerMacOS *ds = nullptr;

platform/macos/editor/embedded_process_macos.mm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@
128128
if (current_process_id != 0 && is_embedding_completed()) {
129129
script_debugger->send_message("embed:win_event", { DisplayServer::WINDOW_EVENT_CLOSE_REQUEST });
130130
}
131+
embedding_state = EmbeddingState::CLOSED;
131132
}
132133

133134
void EmbeddedProcessMacOS::display_state_changed() {

0 commit comments

Comments
 (0)