diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.cpp | 9 | ||||
| -rw-r--r-- | src/moapplication.cpp | 2 | ||||
| -rw-r--r-- | src/shared/util.h | 1 |
3 files changed, 9 insertions, 3 deletions
diff --git a/src/main.cpp b/src/main.cpp index 60d99817..84db88cb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -80,7 +80,8 @@ int run(int argc, char *argv[]) // stuff that's done only once, even if MO restarts in the loop below app.firstTimeSetup(multiProcess); - // force the "Select instance" dialog on startup (only for first loop) + // force the "Select instance" dialog on startup, only for first loop or when + // the current instance cannot be used bool pick = cl.pick(); // MO runs in a loop because it can be restarted in several ways, such as @@ -105,13 +106,17 @@ int run(int argc, char *argv[]) const auto r = app.setup(multiProcess, pick); pick = false; - if (r == RestartExitCode) { + if (r == RestartExitCode || r == ReselectExitCode) { // resets things when MO is "restarted" app.resetForRestart(); // don't reprocess command line cl.clear(); + if (r == ReselectExitCode) { + pick = true; + } + continue; } else if (r != 0) { // something failed, quit diff --git a/src/moapplication.cpp b/src/moapplication.cpp index 11053e66..4a6585dd 100644 --- a/src/moapplication.cpp +++ b/src/moapplication.cpp @@ -492,7 +492,7 @@ std::optional<int> MOApplication::setupInstanceLoop( continue;
} else if (setupResult == SetupInstanceResults::SelectAnother) {
InstanceManager::singleton().clearCurrentInstance();
- return RestartExitCode;
+ return ReselectExitCode;
} else {
return 1;
}
diff --git a/src/shared/util.h b/src/shared/util.h index 1688a931..d8fdb3a3 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -74,6 +74,7 @@ enum class Exit };
const int RestartExitCode = INT_MAX;
+const int ReselectExitCode = INT_MAX - 1;
using ExitFlags = QFlags<Exit>;
Q_DECLARE_OPERATORS_FOR_FLAGS(ExitFlags);
|
