diff --git a/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp b/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp index 47622c2d5..40810db2c 100644 --- a/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp +++ b/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp @@ -569,15 +569,16 @@ int XDPFileDialog::exec() { setAttribute(Qt::WA_ShowModal, true); setResult(0); + show(); + if (failedToOpen()) { + return result(); + } + + QPointer 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 guard = this; - loop->run(); if (guard.isNull()) {