From 580b947c6e00420a3b66182635c3d3f06ace15b6 Mon Sep 17 00:00:00 2001 From: ViniciusCruzMoura Date: Tue, 17 Mar 2026 02:08:16 -0400 Subject: [PATCH 1/2] UIScene_MainMenu: Enable the Exit Game Button Behaviour MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit i noticed that the exit game button on the menu screen wasn't working, so i went ahead and enabled it and added the behavior to close the game. i added a Close method in the 4J_Render class and made a tweak to the _xbox check. the catch is that it uses the xbox text for the confirmation button, so i’m not sure if it’s the best approach, but it does work fine for me Signed-off-by: ViniciusCruzMoura --- 4J.Render/4J_Render.cpp | 2 ++ 4J.Render/4J_Render.h | 1 + Minecraft.Client/Platform/Common/UI/UILayer.cpp | 1 + Minecraft.Client/Platform/Common/UI/UIScene.cpp | 7 +++++-- Minecraft.Client/Platform/Common/UI/UIScene_MainMenu.cpp | 9 +++++++-- .../Platform/Common/UI/UIScene_TrialExitUpsell.cpp | 1 + Minecraft.Client/Platform/Linux/Linux_App.cpp | 5 ++++- 7 files changed, 21 insertions(+), 5 deletions(-) diff --git a/4J.Render/4J_Render.cpp b/4J.Render/4J_Render.cpp index 85cdb58e4..1133cd4e8 100644 --- a/4J.Render/4J_Render.cpp +++ b/4J.Render/4J_Render.cpp @@ -311,6 +311,8 @@ void C4JRender::SetFullscreen(bool fs) { s_fullscreen = fs; } bool C4JRender::ShouldClose() { return !s_window || s_shouldClose; } +void C4JRender::Close() { s_window = nullptr; } + void C4JRender::Shutdown() { // Destroy the main window and clean up SDL resources so that // destructors running after the game loop don't touch a dead context. diff --git a/4J.Render/4J_Render.h b/4J.Render/4J_Render.h index 520fe165a..564d56848 100644 --- a/4J.Render/4J_Render.h +++ b/4J.Render/4J_Render.h @@ -227,6 +227,7 @@ public: // Linux window management bool ShouldClose(); + void Close(); void Shutdown(); }; diff --git a/Minecraft.Client/Platform/Common/UI/UILayer.cpp b/Minecraft.Client/Platform/Common/UI/UILayer.cpp index 3fbefb8bb..c57affc13 100644 --- a/Minecraft.Client/Platform/Common/UI/UILayer.cpp +++ b/Minecraft.Client/Platform/Common/UI/UILayer.cpp @@ -342,6 +342,7 @@ bool UILayer::NavigateToScene(int iPad, EUIScene scene, void *initData) // Frontend case eUIScene_TrialExitUpsell: newScene = new UIScene_TrialExitUpsell(iPad, initData, this); + app.DebugPrintf("UILayer::NavigateToScene AFTER UIScene_TrialExitUpsell CALL\n"); break; case eUIScene_Intro: newScene = new UIScene_Intro(iPad, initData, this); diff --git a/Minecraft.Client/Platform/Common/UI/UIScene.cpp b/Minecraft.Client/Platform/Common/UI/UIScene.cpp index 13e2a0323..1706e4b0d 100644 --- a/Minecraft.Client/Platform/Common/UI/UIScene.cpp +++ b/Minecraft.Client/Platform/Common/UI/UIScene.cpp @@ -226,9 +226,12 @@ void UIScene::setSafeZone(S32 safeTop, S32 safeBottom, S32 safeLeft, S32 safeRig void UIScene::initialiseMovie() { loadMovie(); - mapElementsAndNames(); + app.DebugPrintf("UIScene::initialiseMovie AFTER loadMovie CALL\n"); + mapElementsAndNames(); + app.DebugPrintf("UIScene::initialiseMovie AFTER mapElementsAndNames CALL\n"); updateSafeZone(); + app.DebugPrintf("UIScene::initialiseMovie AFTER updateSafeZone CALL\n"); m_bUpdateOpacity = true; } @@ -1283,4 +1286,4 @@ int UIScene::parseSlotId(const char16_t *s) { } return id; -} \ No newline at end of file +} diff --git a/Minecraft.Client/Platform/Common/UI/UIScene_MainMenu.cpp b/Minecraft.Client/Platform/Common/UI/UIScene_MainMenu.cpp index 42570b990..1c1d6e1cc 100644 --- a/Minecraft.Client/Platform/Common/UI/UIScene_MainMenu.cpp +++ b/Minecraft.Client/Platform/Common/UI/UIScene_MainMenu.cpp @@ -301,7 +301,9 @@ void UIScene_MainMenu::handlePress(F64 controlId, F64 childId) ui.PlayUISFX(eSFX_Press); signInReturnedFunc = &UIScene_MainMenu::CreateLoad_SignInReturned; + app.DebugPrintf("UIScene_MainMenu::handlePress AFTER &UIScene_MainMenu::CreateLoad_SignInReturned\n"); #endif + app.DebugPrintf("UIScene_MainMenu::handlePress FINISH eControl_PlayGame \n"); break; case eControl_Leaderboards: //CD - Added for audio @@ -334,7 +336,6 @@ void UIScene_MainMenu::handlePress(F64 controlId, F64 childId) m_eAction=eAction_RunUnlockOrDLC; signInReturnedFunc = &UIScene_MainMenu::UnlockFullGame_SignInReturned; break; -#if defined _XBOX case eControl_Exit: if( ProfileManager.IsFullVersion() ) { @@ -342,16 +343,19 @@ void UIScene_MainMenu::handlePress(F64 controlId, F64 childId) uiIDA[0]=IDS_CANCEL; uiIDA[1]=IDS_OK; ui.RequestMessageBox(IDS_WARNING_ARCADE_TITLE, IDS_WARNING_ARCADE_TEXT, uiIDA, 2, XUSER_INDEX_ANY,&UIScene_MainMenu::ExitGameReturned,this); + app.DebugPrintf("UIScene_MainMenu::handlePress AFTER ui.RequestMessageBox(IDS_WARNING_ARCADE_TITLE, IDS_WARNING_ARCADE_TEXT, uiIDA, 2, XUSER_INDEX_ANY,&UIScene_MainMenu::ExitGameReturned,this) CALL\n"); } +#if defined _XBOX //|| _ENABLEIGGY else { #ifdef _XBOX_ONE ui.ShowPlayerDisplayname(true); #endif ui.NavigateToScene(primaryPad,eUIScene_TrialExitUpsell); + app.DebugPrintf("UIScene_MainMenu::handlePress AFTER ui.NavigateToScene(primaryPad,eUIScene_TrialExitUpsell) CALL\n"); } - break; #endif + break; #ifdef _DURANGO case eControl_XboxHelp: @@ -1034,6 +1038,7 @@ int UIScene_MainMenu::ExitGameReturned(void *pParam,int iPad,C4JStorage::EMessag { //XLaunchNewImage(XLAUNCH_KEYWORD_DASH_ARCADE, 0); app.ExitGame(); + app.DebugPrintf("UIScene_MainMenu::ExitGameReturned AFTER app.ExitGame() CALL\n"); } return 0; diff --git a/Minecraft.Client/Platform/Common/UI/UIScene_TrialExitUpsell.cpp b/Minecraft.Client/Platform/Common/UI/UIScene_TrialExitUpsell.cpp index 272933921..7d25cb6b0 100644 --- a/Minecraft.Client/Platform/Common/UI/UIScene_TrialExitUpsell.cpp +++ b/Minecraft.Client/Platform/Common/UI/UIScene_TrialExitUpsell.cpp @@ -6,6 +6,7 @@ UIScene_TrialExitUpsell::UIScene_TrialExitUpsell(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer) { // Setup all the Iggy references we need for this scene + app.DebugPrintf("UIScene_TrialExitUpsell::UIScene_TrialExitUpsell BEFORE initialiseMovie CALL\n"); initialiseMovie(); } diff --git a/Minecraft.Client/Platform/Linux/Linux_App.cpp b/Minecraft.Client/Platform/Linux/Linux_App.cpp index 0193d2840..cd462caa2 100644 --- a/Minecraft.Client/Platform/Linux/Linux_App.cpp +++ b/Minecraft.Client/Platform/Linux/Linux_App.cpp @@ -23,7 +23,10 @@ void CConsoleMinecraftApp::SetRichPresenceContext(int iPad, int contextId) { } void CConsoleMinecraftApp::StoreLaunchData() {} -void CConsoleMinecraftApp::ExitGame() {} +void CConsoleMinecraftApp::ExitGame() { + app.DebugPrintf("Linux_App CConsoleMinecraftApp::ExitGame AFTER START\n"); + RenderManager.Close(); +} void CConsoleMinecraftApp::FatalLoadError() { app.DebugPrintf( "CConsoleMinecraftApp::FatalLoadError - asserting 0 and dying...\n"); From 4f252c86151319b3c3b57af8776a13016e64b73b Mon Sep 17 00:00:00 2001 From: ViniciusCruzMoura Date: Tue, 17 Mar 2026 07:05:50 -0400 Subject: [PATCH 2/2] languages: replace 'Return to Xbox Dashboard' to 'Return to Desktop' I just did a grep and replace, to update #277 pull request git grep -rn "Return to Xbox Dashboard" Signed-off-by: ViniciusCruzMoura --- .../Windows64Media/Media/languages.loc | Bin 1469999 -> 1469993 bytes .../Windows64Media/loc/4J_stringsGeneric.xml | 4 ++-- .../loc/4J_stringsPlatformSpecific.xml | 4 ++-- .../Windows64Media/loc/en-EN/strings.lang | 6 +++--- .../loc/ko-KR/4J_stringsPlatformSpecific.xml | 4 ++-- .../Windows64Media/loc/ko-KR/strings.lang | 4 ++-- Minecraft.Assets/XboxMedia/4J_strings.resx | 2 +- .../Durango/4JLibs/Media/4J_strings.resx | 2 +- .../Platform/PS3/4JLibs/Media/4J_strings.resx | 2 +- .../Xbox/4JLibs/Media/4J_strings.resx | 2 +- .../Platform/Xbox/loc/Minecraft_all.resx | 2 +- 11 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Minecraft.Assets/Windows64Media/Media/languages.loc b/Minecraft.Assets/Windows64Media/Media/languages.loc index 3f4659e3a289a15a662c2caf8ab7308d22d361fb..bff8f6fb204e217e977763edd8f6f59499251562 100644 GIT binary patch delta 107 zcmZ2~CvxST$c8P9hPT;WQj4=o@(bGSZ!-ch6A&{4F$)m00x=s9vjZ^)5OV@C7Z7s; jF%J;)0x=&D^8>K}5DNma5D*IkvB-A&+oB&PF>(O_)(tJb delta 112 zcmZ2^CvyFr$c8P9hPU}5lJYAQToQ{jlJXOaQrazUGXgOa5HkZY3lOscF&hxG12G2> oa{@6J5OV`D4-oSLF&_}~1F--Q3j(na5DNpb$aag{q8}y!0D8nPmH+?% diff --git a/Minecraft.Assets/Windows64Media/loc/4J_stringsGeneric.xml b/Minecraft.Assets/Windows64Media/loc/4J_stringsGeneric.xml index 461ff6f0d..aa59296c3 100644 --- a/Minecraft.Assets/Windows64Media/loc/4J_stringsGeneric.xml +++ b/Minecraft.Assets/Windows64Media/loc/4J_stringsGeneric.xml @@ -120,7 +120,7 @@ - Return to Xbox Dashboard + Return to Desktop @@ -208,4 +208,4 @@ Would you like to unlock the full game? You are being returned to the main menu because of a problem reading your profile. - \ No newline at end of file + diff --git a/Minecraft.Assets/Windows64Media/loc/4J_stringsPlatformSpecific.xml b/Minecraft.Assets/Windows64Media/loc/4J_stringsPlatformSpecific.xml index 8d705a63b..eae569f62 100644 --- a/Minecraft.Assets/Windows64Media/loc/4J_stringsPlatformSpecific.xml +++ b/Minecraft.Assets/Windows64Media/loc/4J_stringsPlatformSpecific.xml @@ -40,7 +40,7 @@ - Return to Xbox Dashboard + Return to Desktop @@ -102,4 +102,4 @@ You are being returned to the main menu because of a problem reading your profile. - \ No newline at end of file + diff --git a/Minecraft.Assets/Windows64Media/loc/en-EN/strings.lang b/Minecraft.Assets/Windows64Media/loc/en-EN/strings.lang index bc78f1d56..c8ef73677 100644 --- a/Minecraft.Assets/Windows64Media/loc/en-EN/strings.lang +++ b/Minecraft.Assets/Windows64Media/loc/en-EN/strings.lang @@ -185,7 +185,7 @@ - Return to Xbox Dashboard + Return to Desktop @@ -315,7 +315,7 @@ Would you like to unlock the full game? - Return to Xbox Dashboard + Return to Desktop @@ -8604,4 +8604,4 @@ If you try to save while using the trial version, you will be given the option t Network Error - \ No newline at end of file + diff --git a/Minecraft.Assets/Windows64Media/loc/ko-KR/4J_stringsPlatformSpecific.xml b/Minecraft.Assets/Windows64Media/loc/ko-KR/4J_stringsPlatformSpecific.xml index 8d705a63b..eae569f62 100644 --- a/Minecraft.Assets/Windows64Media/loc/ko-KR/4J_stringsPlatformSpecific.xml +++ b/Minecraft.Assets/Windows64Media/loc/ko-KR/4J_stringsPlatformSpecific.xml @@ -40,7 +40,7 @@ - Return to Xbox Dashboard + Return to Desktop @@ -102,4 +102,4 @@ You are being returned to the main menu because of a problem reading your profile. - \ No newline at end of file + diff --git a/Minecraft.Assets/Windows64Media/loc/ko-KR/strings.lang b/Minecraft.Assets/Windows64Media/loc/ko-KR/strings.lang index 80d00b99f..a2b3c4f0f 100644 --- a/Minecraft.Assets/Windows64Media/loc/ko-KR/strings.lang +++ b/Minecraft.Assets/Windows64Media/loc/ko-KR/strings.lang @@ -250,7 +250,7 @@ - Return to Xbox Dashboard + Return to Desktop @@ -8398,4 +8398,4 @@ Xbox 360 본체용 Minecraft는 멀티 플레이 게임이 기본값으로 되 이 옵션을 켜면 도전 과제를 획득할 수 없으며 순위표에 기록되지 않습니다. 플레이 도중에 옵션을 켜거나 옵션을 켠 후 저장한 게임을 다시 불러와도 마찬가지입니다. - \ No newline at end of file + diff --git a/Minecraft.Assets/XboxMedia/4J_strings.resx b/Minecraft.Assets/XboxMedia/4J_strings.resx index ecafab861..2d7e48a7a 100644 --- a/Minecraft.Assets/XboxMedia/4J_strings.resx +++ b/Minecraft.Assets/XboxMedia/4J_strings.resx @@ -92,7 +92,7 @@ Enter a name for your savegame - Return to Xbox Dashboard + Return to Desktop Are you sure you want to exit the game? diff --git a/Minecraft.Client/Platform/Durango/4JLibs/Media/4J_strings.resx b/Minecraft.Client/Platform/Durango/4JLibs/Media/4J_strings.resx index c8243fc0a..e904b7c1e 100644 --- a/Minecraft.Client/Platform/Durango/4JLibs/Media/4J_strings.resx +++ b/Minecraft.Client/Platform/Durango/4JLibs/Media/4J_strings.resx @@ -92,7 +92,7 @@ Enter a name for your savegame - Return to Xbox Dashboard + Return to Desktop Are you sure you want to exit the game? diff --git a/Minecraft.Client/Platform/PS3/4JLibs/Media/4J_strings.resx b/Minecraft.Client/Platform/PS3/4JLibs/Media/4J_strings.resx index c8243fc0a..e904b7c1e 100644 --- a/Minecraft.Client/Platform/PS3/4JLibs/Media/4J_strings.resx +++ b/Minecraft.Client/Platform/PS3/4JLibs/Media/4J_strings.resx @@ -92,7 +92,7 @@ Enter a name for your savegame - Return to Xbox Dashboard + Return to Desktop Are you sure you want to exit the game? diff --git a/Minecraft.Client/Platform/Xbox/4JLibs/Media/4J_strings.resx b/Minecraft.Client/Platform/Xbox/4JLibs/Media/4J_strings.resx index c8243fc0a..e904b7c1e 100644 --- a/Minecraft.Client/Platform/Xbox/4JLibs/Media/4J_strings.resx +++ b/Minecraft.Client/Platform/Xbox/4JLibs/Media/4J_strings.resx @@ -92,7 +92,7 @@ Enter a name for your savegame - Return to Xbox Dashboard + Return to Desktop Are you sure you want to exit the game? diff --git a/Minecraft.Client/Platform/Xbox/loc/Minecraft_all.resx b/Minecraft.Client/Platform/Xbox/loc/Minecraft_all.resx index 03ccb6ced..1fef82234 100644 --- a/Minecraft.Client/Platform/Xbox/loc/Minecraft_all.resx +++ b/Minecraft.Client/Platform/Xbox/loc/Minecraft_all.resx @@ -59,7 +59,7 @@ Enter a name for your savegame -Return to Xbox Dashboard +Return to Desktop Are you sure you want to exit the game?