[kcmkwin] Make dialog non blocking

Summary:
It's invoked from QML.

Nested event loops invoked directly from QML is asking for crashes.

BUG: 419118

Test Plan:
Opened KCM
Opened dialog for some settings
Window was still modal as before
Settings were saved
(though they didn't seem to be applied..maybe another bug?)

Reviewers: #kwin, apol

Reviewed By: apol

Subscribers: zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D28293
This commit is contained in:
David Edmundson 2020-03-30 17:27:11 +01:00
parent 9755ef20e5
commit 0a65681596

View file

@ -634,7 +634,7 @@ void EffectsModel::requestConfigure(const QModelIndex &index, QWindow *transient
return;
}
QPointer<QDialog> dialog = new QDialog();
auto dialog = new QDialog();
KCModule *module = index.data(ScriptedRole).toBool()
? findScriptedConfig(index.data(ServiceNameRole).toString(), dialog)
@ -666,11 +666,13 @@ void EffectsModel::requestConfigure(const QModelIndex &index, QWindow *transient
layout->addWidget(module);
layout->addWidget(buttons);
if (dialog->exec() == QDialog::Accepted) {
connect(dialog, &QDialog::accepted, module, [module]() {
module->save();
}
});
delete dialog;
dialog->setModal(true);
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->show();
}
bool EffectsModel::shouldStore(const EffectData &data) const