diff --git a/src/libslic3r/AppConfig.hpp b/src/libslic3r/AppConfig.hpp index adb30375e3..9ec0cf0fc9 100644 --- a/src/libslic3r/AppConfig.hpp +++ b/src/libslic3r/AppConfig.hpp @@ -91,6 +91,10 @@ public: std::string get_language_code(); std::string get_hms_host(); bool get_stealth_mode(); + // The user's OWN Stealth mode setting, without the pre-wizard default that get_stealth_mode() + // applies. Use this wherever "the wizard is unfinished" must not count as stealth — blocking + // sign-in above all, since signing in is how a user leaves that state in the first place. + bool get_stealth_mode_setting() { return get_bool("stealth_mode"); } // Session state, not a setting: mirrors whether a cloud account is currently signed in, so // get_stealth_mode() can tell "the user has not been asked yet" from "the user said no". void set_cloud_logged_in(bool logged_in) { m_cloud_logged_in = logged_in; } diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 64f539db20..81f2cb8c5f 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -5084,7 +5084,12 @@ std::string GUI_App::handle_web_request(std::string cmd) }); return ""; } - if (app_config->get_stealth_mode() && stealth_blocked_login_commands.count(command_str)) { + // The user's own setting only. Blocking sign-in because the setup wizard is unfinished + // is backwards — signing in is how you leave that state — and it told a user who had + // never touched the toggle "You are currently in Stealth Mode", then offered a Quit + // button that writes stealth_mode=false when it was already false and leaves the + // pre-wizard default exactly where it was. + if (app_config->get_stealth_mode_setting() && stealth_blocked_login_commands.count(command_str)) { CallAfter([this, command_str] { MessageDialog dlg(mainframe, _L("You are currently in Stealth Mode. To log into the Cloud, you need to disable Stealth Mode first."),