Skip to content

Commit b298f6f

Browse files
committed
Merge pull request #101936 from Hilderin/disable-game-embedding-single-window-mode
Disable Game Embedding in Single Window Mode
2 parents a736394 + e75f679 commit b298f6f

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));
@@ -429,6 +429,9 @@ GameView::EmbedAvailability GameView::_get_embed_available() {
429429
if (!DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_WINDOW_EMBEDDING)) {
430430
return EMBED_NOT_AVAILABLE_FEATURE_NOT_SUPPORTED;
431431
}
432+
if (!EditorNode::get_singleton()->is_multi_window_enabled()) {
433+
return EMBED_NOT_AVAILABLE_SINGLE_WINDOW_MODE;
434+
}
432435

433436
EditorRun::WindowPlacement placement = EditorRun::get_window_placement();
434437
if (placement.force_fullscreen) {
@@ -483,6 +486,9 @@ void GameView::_update_ui() {
483486
case EMBED_NOT_AVAILABLE_FULLSCREEN:
484487
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."));
485488
break;
489+
case EMBED_NOT_AVAILABLE_SINGLE_WINDOW_MODE:
490+
state_label->set_text(TTR("Game embedding not available in single window mode."));
491+
break;
486492
}
487493

488494
if (available == EMBED_AVAILABLE) {
@@ -501,8 +507,7 @@ void GameView::_update_embed_menu_options() {
501507
menu->set_item_checked(menu->get_item_index(EMBED_RUN_GAME_EMBEDDED), embed_on_play);
502508
menu->set_item_checked(menu->get_item_index(EMBED_MAKE_FLOATING_ON_PLAY), make_floating_on_play);
503509

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

507512
fixed_size_button->set_pressed(embed_size_mode == SIZE_MODE_FIXED);
508513
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)