fix: add support for args with spaces to MultiMC::messageReceived()

Previously, when the main instance of MultiMC would receive an `import`
or `launch` message from another instance, it would split the message on
each space, and only read the first word of the argument (zip path/URL
or instance ID). This commit fixes that problem by sectioning the
message string instead.
This commit is contained in:
OverMighty 2020-05-04 11:37:02 +02:00
parent 313a6574c1
commit bbcacec6ec

View File

@ -867,8 +867,7 @@ void MultiMC::messageReceived(const QString& message)
return; return;
} }
QStringList args = message.split(' '); QString command = message.section(' ', 0, 0);
QString command = args.takeFirst();
if(command == "activate") if(command == "activate")
{ {
@ -876,21 +875,23 @@ void MultiMC::messageReceived(const QString& message)
} }
else if(command == "import") else if(command == "import")
{ {
if(args.isEmpty()) QString arg = message.section(' ', 1);
if(arg.isEmpty())
{ {
qWarning() << "Received" << command << "message without a zip path/URL."; qWarning() << "Received" << command << "message without a zip path/URL.";
return; return;
} }
m_mainWindow->droppedURLs({ QUrl(args.takeFirst()) }); m_mainWindow->droppedURLs({ QUrl(arg) });
} }
else if(command == "launch") else if(command == "launch")
{ {
if(args.isEmpty()) QString arg = message.section(' ', 1);
if(arg.isEmpty())
{ {
qWarning() << "Received" << command << "message without an instance ID."; qWarning() << "Received" << command << "message without an instance ID.";
return; return;
} }
auto inst = instances()->getInstanceById(args.takeFirst()); auto inst = instances()->getInstanceById(arg);
if(inst) if(inst)
{ {
launch(inst, true, nullptr); launch(inst, true, nullptr);