From 3126a249d2b029e42d8809790a55aa424a87fb7c Mon Sep 17 00:00:00 2001 From: phosit Date: Thu, 24 Apr 2025 16:57:15 +0200 Subject: [PATCH] Remove Engine.SwitchGuiPage from locale --- .../data/mods/public/gui/locale/locale.js | 27 ++++++++++++------- .../data/mods/public/gui/locale/locale.xml | 3 +-- .../mods/public/gui/pregame/MainMenuItems.js | 9 +++++-- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/binaries/data/mods/public/gui/locale/locale.js b/binaries/data/mods/public/gui/locale/locale.js index 446c27f765..9d34929fa9 100644 --- a/binaries/data/mods/public/gui/locale/locale.js +++ b/binaries/data/mods/public/gui/locale/locale.js @@ -19,22 +19,31 @@ function init() var localeText = Engine.GetGUIObjectByName("localeText"); localeText.caption = currentLocale; - return new Promise(closePageCallback => + const cancel = new Promise(closePageCallback => { - Engine.GetGUIObjectByName("cancelButton").onPress = closePageCallback; + Engine.GetGUIObjectByName("cancelButton").onPress = closePageCallback.bind(undefined, false); }); + + return Promise.race([ cancel, applySelectedLocale() ]); } function applySelectedLocale() { - var localeText = Engine.GetGUIObjectByName("localeText"); - if (!Engine.SaveLocale(localeText.caption)) + return new Promise(closePageCallback => { - warn("Selected locale could not be saved in the configuration!"); - return; - } - Engine.ReevaluateCurrentLocaleAndReload(); - Engine.SwitchGuiPage("page_pregame.xml"); + Engine.GetGUIObjectByName("apply").onPress = () => + { + var localeText = Engine.GetGUIObjectByName("localeText"); + if (!Engine.SaveLocale(localeText.caption)) + { + warn("Selected locale could not be saved in the configuration!"); + return; + } + + Engine.ReevaluateCurrentLocaleAndReload(); + closePageCallback(true); + }; + }); } function languageSelectionChanged() diff --git a/binaries/data/mods/public/gui/locale/locale.xml b/binaries/data/mods/public/gui/locale/locale.xml index 0015c485df..9e8f3bf69b 100644 --- a/binaries/data/mods/public/gui/locale/locale.xml +++ b/binaries/data/mods/public/gui/locale/locale.xml @@ -41,9 +41,8 @@ openAdvancedMenu(); - + Accept - applySelectedLocale(); diff --git a/binaries/data/mods/public/gui/pregame/MainMenuItems.js b/binaries/data/mods/public/gui/pregame/MainMenuItems.js index 01c24bb565..daa1efc0c1 100644 --- a/binaries/data/mods/public/gui/pregame/MainMenuItems.js +++ b/binaries/data/mods/public/gui/pregame/MainMenuItems.js @@ -312,9 +312,14 @@ export const mainMenuItems = [ { "caption": translate("Language"), "tooltip": translate("Choose the language of the game."), - "onPress": () => + "onPress": async(closePageCallback) => { - Engine.OpenChildPage("page_locale.xml"); + if (!await Engine.OpenChildPage("page_locale.xml")) + return; + + closePageCallback({ [Engine.openRequest]: { + "page": "page_pregame.xml" + } }); } }, {