diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index 2e412e9919..8501ad3470 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -667,7 +667,7 @@ void AccountSettings::slotEnableVfsCurrentFolder() if (!selected.isValid() || !folder) return; - OwncloudWizard::askExperimentalVirtualFilesFeature([folder, this](bool enable) { + OwncloudWizard::askExperimentalVirtualFilesFeature(this, [folder, this](bool enable) { if (!enable || !folder) return; diff --git a/src/gui/folderwizard.cpp b/src/gui/folderwizard.cpp index 4fdb605fc4..ae23d2a4ac 100644 --- a/src/gui/folderwizard.cpp +++ b/src/gui/folderwizard.cpp @@ -545,7 +545,7 @@ void FolderWizardSelectiveSync::virtualFilesCheckboxClicked() // The click has already had an effect on the box, so if it's // checked it was newly activated. if (_virtualFilesCheckBox->isChecked()) { - OwncloudWizard::askExperimentalVirtualFilesFeature([this](bool enable) { + OwncloudWizard::askExperimentalVirtualFilesFeature(this, [this](bool enable) { if (!enable) _virtualFilesCheckBox->setChecked(false); }); diff --git a/src/gui/wizard/owncloudadvancedsetuppage.cpp b/src/gui/wizard/owncloudadvancedsetuppage.cpp index 82d168f178..c780707f9f 100644 --- a/src/gui/wizard/owncloudadvancedsetuppage.cpp +++ b/src/gui/wizard/owncloudadvancedsetuppage.cpp @@ -368,14 +368,16 @@ void OwncloudAdvancedSetupPage::slotSelectiveSyncClicked() void OwncloudAdvancedSetupPage::slotVirtualFileSyncClicked() { - OwncloudWizard::askExperimentalVirtualFilesFeature([this](bool enable) { - if (!enable) - return; + if (!_ui.rVirtualFileSync->isChecked()) { + OwncloudWizard::askExperimentalVirtualFilesFeature(this, [this](bool enable) { + if (!enable) + return; - _ui.lSelectiveSyncSizeLabel->setText(QString()); - _selectiveSyncBlacklist.clear(); - setRadioChecked(_ui.rVirtualFileSync); - }); + _ui.lSelectiveSyncSizeLabel->setText(QString()); + _selectiveSyncBlacklist.clear(); + setRadioChecked(_ui.rVirtualFileSync); + }); + } } void OwncloudAdvancedSetupPage::slotSyncEverythingClicked() diff --git a/src/gui/wizard/owncloudwizard.cpp b/src/gui/wizard/owncloudwizard.cpp index 8e53e8c199..dddd5b4cf1 100644 --- a/src/gui/wizard/owncloudwizard.cpp +++ b/src/gui/wizard/owncloudwizard.cpp @@ -330,7 +330,7 @@ void OwncloudWizard::bringToTop() ownCloudGui::raiseDialog(this); } -void OwncloudWizard::askExperimentalVirtualFilesFeature(const std::function &callback) +void OwncloudWizard::askExperimentalVirtualFilesFeature(QWidget *receiver, const std::function &callback) { const auto bestVfsMode = bestAvailableVfsMode(); QMessageBox *msgBox = nullptr; @@ -369,7 +369,8 @@ void OwncloudWizard::askExperimentalVirtualFilesFeature(const std::functionaddButton(tr("Enable experimental placeholder mode"), QMessageBox::AcceptRole); msgBox->addButton(tr("Stay safe"), QMessageBox::RejectRole); } - connect(msgBox, &QMessageBox::finished, msgBox, [callback, msgBox](int result) { + msgBox->setParent(receiver); + connect(msgBox, &QMessageBox::finished, receiver, [callback, msgBox](int result) { callback(result == QMessageBox::AcceptRole); msgBox->deleteLater(); }); diff --git a/src/gui/wizard/owncloudwizard.h b/src/gui/wizard/owncloudwizard.h index 3dd479d597..0f02b7c651 100644 --- a/src/gui/wizard/owncloudwizard.h +++ b/src/gui/wizard/owncloudwizard.h @@ -82,7 +82,7 @@ public: * being experimental. Calles the callback with true if enabling was * chosen. */ - static void askExperimentalVirtualFilesFeature(const std::function &callback); + static void askExperimentalVirtualFilesFeature(QWidget *receiver, const std::function &callback); // FIXME: Can those be local variables? // Set from the OwncloudSetupPage, later used from OwncloudHttpCredsPage