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); });