Add an opt-out for the single-process behavior
This would have been useful for testing multiple times and now even came up in a forum discussion.
This commit is contained in:
parent
7ada03b00b
commit
6122b54210
|
@ -159,6 +159,7 @@ int runApplication(int argc, const char *const *argv)
|
||||||
connectionArg.setRequiredValueCount(Argument::varValueCount);
|
connectionArg.setRequiredValueCount(Argument::varValueCount);
|
||||||
ConfigValueArgument configPathArg("config-dir-path", '\0', "specifies the path to the configuration directory", { "path" });
|
ConfigValueArgument configPathArg("config-dir-path", '\0', "specifies the path to the configuration directory", { "path" });
|
||||||
configPathArg.setEnvironmentVariable(PROJECT_VARNAME_UPPER "_CONFIG_DIR");
|
configPathArg.setEnvironmentVariable(PROJECT_VARNAME_UPPER "_CONFIG_DIR");
|
||||||
|
ConfigValueArgument newInstanceArg("new-instance", '\0', "disable the usual single-process behavior");
|
||||||
Argument &widgetsGuiArg = qtConfigArgs.qtWidgetsGuiArg();
|
Argument &widgetsGuiArg = qtConfigArgs.qtWidgetsGuiArg();
|
||||||
widgetsGuiArg.addSubArgument(&windowedArg);
|
widgetsGuiArg.addSubArgument(&windowedArg);
|
||||||
widgetsGuiArg.addSubArgument(&showWebUiArg);
|
widgetsGuiArg.addSubArgument(&showWebUiArg);
|
||||||
|
@ -166,6 +167,7 @@ int runApplication(int argc, const char *const *argv)
|
||||||
widgetsGuiArg.addSubArgument(&waitForTrayArg);
|
widgetsGuiArg.addSubArgument(&waitForTrayArg);
|
||||||
widgetsGuiArg.addSubArgument(&connectionArg);
|
widgetsGuiArg.addSubArgument(&connectionArg);
|
||||||
widgetsGuiArg.addSubArgument(&configPathArg);
|
widgetsGuiArg.addSubArgument(&configPathArg);
|
||||||
|
widgetsGuiArg.addSubArgument(&newInstanceArg);
|
||||||
|
|
||||||
parser.setMainArguments({ &qtConfigArgs.qtWidgetsGuiArg(), &parser.noColorArg(), &parser.helpArg() });
|
parser.setMainArguments({ &qtConfigArgs.qtWidgetsGuiArg(), &parser.noColorArg(), &parser.helpArg() });
|
||||||
parser.parseArgs(argc, argv);
|
parser.parseArgs(argc, argv);
|
||||||
|
@ -187,7 +189,7 @@ int runApplication(int argc, const char *const *argv)
|
||||||
SET_QT_APPLICATION_INFO;
|
SET_QT_APPLICATION_INFO;
|
||||||
QApplication application(argc, const_cast<char **>(argv));
|
QApplication application(argc, const_cast<char **>(argv));
|
||||||
QGuiApplication::setQuitOnLastWindowClosed(false);
|
QGuiApplication::setQuitOnLastWindowClosed(false);
|
||||||
SingleInstance singleInstance(argc, argv);
|
SingleInstance singleInstance(argc, argv, newInstanceArg.isPresent());
|
||||||
networkAccessManager().setParent(&singleInstance);
|
networkAccessManager().setParent(&singleInstance);
|
||||||
QObject::connect(&singleInstance, &SingleInstance::newInstance, &runApplication);
|
QObject::connect(&singleInstance, &SingleInstance::newInstance, &runApplication);
|
||||||
Settings::restore();
|
Settings::restore();
|
||||||
|
|
|
@ -17,10 +17,14 @@ using namespace CppUtilities::EscapeCodes;
|
||||||
|
|
||||||
namespace QtGui {
|
namespace QtGui {
|
||||||
|
|
||||||
SingleInstance::SingleInstance(int argc, const char *const *argv, QObject *parent)
|
SingleInstance::SingleInstance(int argc, const char *const *argv, bool newInstance, QObject *parent)
|
||||||
: QObject(parent)
|
: QObject(parent)
|
||||||
, m_server(nullptr)
|
, m_server(nullptr)
|
||||||
{
|
{
|
||||||
|
if (newInstance) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const QString appId(QCoreApplication::applicationName() % QStringLiteral(" by ") % QCoreApplication::organizationName());
|
const QString appId(QCoreApplication::applicationName() % QStringLiteral(" by ") % QCoreApplication::organizationName());
|
||||||
|
|
||||||
// check for previous instance
|
// check for previous instance
|
||||||
|
|
|
@ -14,7 +14,7 @@ namespace QtGui {
|
||||||
class SingleInstance : public QObject {
|
class SingleInstance : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
SingleInstance(int argc, const char *const *argv, QObject *parent = nullptr);
|
SingleInstance(int argc, const char *const *argv, bool newInstance = false, QObject *parent = nullptr);
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void newInstance(int argc, const char *const *argv);
|
void newInstance(int argc, const char *const *argv);
|
||||||
|
|
Loading…
Reference in New Issue