Skip to content

Commit e75f679

Browse files
committed
Disable Game Embedding in Single Window Mode
1 parent f1c0b5b commit e75f679

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

editor/plugins/game_view_plugin.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ void GameView::_instance_starting(int p_idx, List<String> &r_arguments) {
223223
if (!is_feature_enabled) {
224224
return;
225225
}
226-
if (p_idx == 0 && embed_on_play && make_floating_on_play && !window_wrapper->get_window_enabled() && EditorNode::get_singleton()->is_multi_window_enabled() && _get_embed_available() == EMBED_AVAILABLE) {
226+
if (p_idx == 0 && embed_on_play && make_floating_on_play && !window_wrapper->get_window_enabled() && _get_embed_available() == EMBED_AVAILABLE) {
227227
// Set the Floating Window default title. Always considered in DEBUG mode, same as in Window::set_title.
228228
String appname = GLOBAL_GET("application/config/name");
229229
appname = vformat("%s (DEBUG)", TranslationServer::get_singleton()->translate(appname));
@@ -423,6 +423,9 @@ GameView::EmbedAvailability GameView::_get_embed_available() {
423423
if (!DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_WINDOW_EMBEDDING)) {
424424
return EMBED_NOT_AVAILABLE_FEATURE_NOT_SUPPORTED;
425425
}
426+
if (!EditorNode::get_singleton()->is_multi_window_enabled()) {
427+
return EMBED_NOT_AVAILABLE_SINGLE_WINDOW_MODE;
428+
}
426429

427430
EditorRun::WindowPlacement placement = EditorRun::get_window_placement();
428431
if (placement.force_fullscreen) {
@@ -477,6 +480,9 @@ void GameView::_update_ui() {
477480
case EMBED_NOT_AVAILABLE_FULLSCREEN:
478481
state_label->set_text(TTR("Game embedding not available when the game starts in fullscreen.\nConsider overriding the window mode project setting with the editor feature tag to Windowed to use game embedding while leaving the exported project intact."));
479482
break;
483+
case EMBED_NOT_AVAILABLE_SINGLE_WINDOW_MODE:
484+
state_label->set_text(TTR("Game embedding not available in single window mode."));
485+
break;
480486
}
481487

482488
if (available == EMBED_AVAILABLE) {
@@ -495,8 +501,7 @@ void GameView::_update_embed_menu_options() {
495501
menu->set_item_checked(menu->get_item_index(EMBED_RUN_GAME_EMBEDDED), embed_on_play);
496502
menu->set_item_checked(menu->get_item_index(EMBED_MAKE_FLOATING_ON_PLAY), make_floating_on_play);
497503

498-
// When embed is Off or in single window mode, Make floating is not available.
499-
menu->set_item_disabled(menu->get_item_index(EMBED_MAKE_FLOATING_ON_PLAY), !embed_on_play || !EditorNode::get_singleton()->is_multi_window_enabled());
504+
menu->set_item_disabled(menu->get_item_index(EMBED_MAKE_FLOATING_ON_PLAY), !embed_on_play);
500505

501506
fixed_size_button->set_pressed(embed_size_mode == SIZE_MODE_FIXED);
502507
keep_aspect_button->set_pressed(embed_size_mode == SIZE_MODE_KEEP_ASPECT);

editor/plugins/game_view_plugin.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ class GameView : public VBoxContainer {
106106
EMBED_NOT_AVAILABLE_MINIMIZED,
107107
EMBED_NOT_AVAILABLE_MAXIMIZED,
108108
EMBED_NOT_AVAILABLE_FULLSCREEN,
109+
EMBED_NOT_AVAILABLE_SINGLE_WINDOW_MODE,
109110
};
110111

111112
inline static GameView *singleton = nullptr;

0 commit comments

Comments
 (0)