From 4ba19d53d72c2c70a95d6c03e38436665bb29f67 Mon Sep 17 00:00:00 2001 From: Pavel Okhlopkov Date: Fri, 10 Apr 2026 19:50:06 +0300 Subject: [PATCH] fix(ui): preserve auto-connect state when navigating back from character screen Add resetForBack() to RealmScreen that clears selection state without resetting autoSelectAttempted, preventing single-realm auto-connect from re-firing when the user navigates back from the character screen. Signed-off-by: Pavel Okhlopkov --- include/ui/realm_screen.hpp | 12 ++++++++++++ src/core/ui_screen_callback_handler.cpp | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/ui/realm_screen.hpp b/include/ui/realm_screen.hpp index ed6504c1..5963328d 100644 --- a/include/ui/realm_screen.hpp +++ b/include/ui/realm_screen.hpp @@ -44,6 +44,18 @@ public: statusMessage.clear(); } + /** + * Reset for back-navigation from character screen. + * Preserves autoSelectAttempted so single-realm auto-connect doesn't re-fire. + */ + void resetForBack() { + selectedRealmIndex = -1; + realmSelected = false; + selectedRealmName.clear(); + selectedRealmAddress.clear(); + statusMessage.clear(); + } + /** * Check if a realm has been selected */ diff --git a/src/core/ui_screen_callback_handler.cpp b/src/core/ui_screen_callback_handler.cpp index 1d6acf87..f2016991 100644 --- a/src/core/ui_screen_callback_handler.cpp +++ b/src/core/ui_screen_callback_handler.cpp @@ -155,7 +155,7 @@ void UIScreenCallbackHandler::setupCallbacks() { uiManager_.getCharacterScreen().setOnBack([this]() { // Disconnect from world server and reset UI state for fresh realm selection gameHandler_.disconnect(); - uiManager_.getRealmScreen().reset(); + uiManager_.getRealmScreen().resetForBack(); uiManager_.getCharacterScreen().reset(); setState_(AppState::REALM_SELECTION); });