Detect when -workdir value is not really custom

This commit is contained in:
Ilya Fedin 2023-07-22 01:07:22 +04:00 committed by John Preston
parent 100e875530
commit cd7539c001
3 changed files with 23 additions and 7 deletions

View File

@ -394,6 +394,18 @@ int Launcher::exec() {
return result;
}
bool Launcher::validateCustomWorkingDir() {
if (customWorkingDir()) {
if (_customWorkingDir == cWorkingDir()) {
_customWorkingDir = {};
return false;
}
cForceWorkingDir(_customWorkingDir);
return true;
}
return false;
}
void Launcher::workingFolderReady() {
srand((unsigned int)time(nullptr));
@ -435,7 +447,7 @@ const QStringList &Launcher::arguments() const {
}
bool Launcher::customWorkingDir() const {
return _customWorkingDir;
return !_customWorkingDir.isEmpty();
}
void Launcher::prepareSettings() {
@ -534,9 +546,9 @@ void Launcher::processArguments() {
gStartInTray = parseResult.contains("-startintray");
gQuit = parseResult.contains("-quit");
gSendPaths = parseResult.value("-sendpath", {});
cForceWorkingDir(parseResult.value("-workdir", {}).join(QString()));
if (!gWorkingDir.isEmpty()) {
_customWorkingDir = true;
_customWorkingDir = parseResult.value("-workdir", {}).join(QString());
if (!_customWorkingDir.isEmpty()) {
_customWorkingDir = QDir(_customWorkingDir).absolutePath() + '/';
}
gStartUrl = parseResult.value("--", {}).join(QString());

View File

@ -34,6 +34,7 @@ public:
uint64 installationTag() const;
bool checkPortableVersionFolder();
bool validateCustomWorkingDir();
void workingFolderReady();
void writeDebugModeSetting();
void writeInstallBetaVersionsSetting();
@ -83,7 +84,7 @@ private:
QStringList _arguments;
BaseIntegration _baseIntegration;
bool _customWorkingDir = false;
QString _customWorkingDir;
};

View File

@ -363,7 +363,6 @@ void start() {
if (!cWorkingDir().isEmpty()) {
// This value must come from TelegramForcePortable
// or from the "-workdir" command line argument.
cForceWorkingDir(cWorkingDir());
workingDirChosen = true;
} else {
@ -391,7 +390,6 @@ void start() {
if (!cWorkingDir().isEmpty()) {
// This value must come from TelegramForcePortable
// or from the "-workdir" command line argument.
cForceWorkingDir(cWorkingDir());
workingDirChosen = true;
}
@ -408,6 +406,11 @@ void start() {
}
}
if (launcher.validateCustomWorkingDir()) {
delete LogsData;
LogsData = new LogsDataFields();
}
// WinRT build requires the working dir to stay the same for plugin loading.
#ifndef Q_OS_WINRT
QDir().setCurrent(cWorkingDir());