Right file dialog freeze fix

The freezing is still happening if the service is not accessible
This commit is contained in:
Ilya Fedin 2021-07-12 00:06:56 +04:00 committed by John Preston
parent c53564cfdc
commit 8ecc98eb03
1 changed files with 8 additions and 14 deletions

View File

@ -569,15 +569,16 @@ int XDPFileDialog::exec() {
setAttribute(Qt::WA_ShowModal, true);
setResult(0);
show();
if (failedToOpen()) {
return result();
}
QPointer<QDialog> guard = this;
// HACK we have to avoid returning until we emit
// that the dialog was accepted or rejected
const auto context = Glib::MainContext::create();
const auto loop = Glib::MainLoop::create(context);
g_main_context_push_thread_default(context->gobj());
const auto contextGuard = gsl::finally([&] {
g_main_context_pop_thread_default(context->gobj());
});
const auto loop = Glib::MainLoop::create();
rpl::lifetime lifetime;
accepted(
@ -590,13 +591,6 @@ int XDPFileDialog::exec() {
loop->quit();
}, lifetime);
show();
if (failedToOpen()) {
return result();
}
QPointer<QDialog> guard = this;
loop->run();
if (guard.isNull()) {