diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -611,7 +611,9 @@ /// 5. Now that settings and translations are available, ask user for data /// directory. User language is set up: pick a data directory. - if (!Intro::pickDataDirectory(*node)) { + bool did_show_intro = false; + // Gracefully exit if the user cancels + if (!Intro::showIfNeeded(*node, did_show_intro)) { return EXIT_SUCCESS; } diff --git a/src/qt/intro.h b/src/qt/intro.h --- a/src/qt/intro.h +++ b/src/qt/intro.h @@ -47,7 +47,7 @@ * @note do NOT call global GetDataDir() before calling this function, this * will cause the wrong path to be cached. */ - static bool pickDataDirectory(interfaces::Node &node); + static bool showIfNeeded(interfaces::Node &node, bool &did_show_intro); /** * Determine default data directory for operating system. diff --git a/src/qt/intro.cpp b/src/qt/intro.cpp --- a/src/qt/intro.cpp +++ b/src/qt/intro.cpp @@ -176,7 +176,9 @@ return GUIUtil::boostPathToQString(GetDefaultDataDir()); } -bool Intro::pickDataDirectory(interfaces::Node &node) { +bool Intro::showIfNeeded(interfaces::Node &node, bool &did_show_intro) { + did_show_intro = false; + QSettings settings; /* If data directory provided on command line, no need to look at settings or show a picking dialog */ @@ -210,6 +212,7 @@ node.getAssumedChainStateSize()); intro.setDataDirectory(dataDir); intro.setWindowIcon(QIcon(":icons/bitcoin")); + did_show_intro = true; while (true) { if (!intro.exec()) {