diff --git a/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp b/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp index 1d960593f..86e652ed3 100644 --- a/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp +++ b/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp @@ -71,8 +71,18 @@ auto MakeFilterList(const QString &filter) { std::optional FileChooserPortalVersion() { try { - const auto connection = Gio::DBus::Connection::get_sync( - Gio::DBus::BusType::BUS_TYPE_SESSION); + const auto connection = [] { + try { + return Gio::DBus::Connection::get_sync( + Gio::DBus::BusType::BUS_TYPE_SESSION); + } catch (...) { + return Glib::RefPtr(); + } + }(); + + if (!connection) { + return std::nullopt; + } auto reply = connection->call_sync( std::string(kXDGDesktopPortalObjectPath), @@ -90,7 +100,6 @@ std::optional FileChooserPortalVersion() { reply.get_child(0))); } catch (const Glib::Error &e) { static const auto NotSupportedErrors = { - "org.freedesktop.DBus.Error.Disconnected", "org.freedesktop.DBus.Error.ServiceUnknown", }; @@ -435,10 +444,7 @@ void XDPFileDialog::openPortal() { }, _cancellable, std::string(kXDGDesktopPortalService)); - } catch (const Glib::Error &e) { - LOG(("XDP File Dialog Error: %1").arg( - QString::fromStdString(e.what()))); - + } catch (...) { _reject.fire({}); } } diff --git a/Telegram/SourceFiles/platform/linux/main_window_linux.cpp b/Telegram/SourceFiles/platform/linux/main_window_linux.cpp index 624e5107a..c6a9f6dae 100644 --- a/Telegram/SourceFiles/platform/linux/main_window_linux.cpp +++ b/Telegram/SourceFiles/platform/linux/main_window_linux.cpp @@ -430,8 +430,18 @@ bool UseUnityCounter() { bool IsSNIAvailable() { try { - const auto connection = Gio::DBus::Connection::get_sync( - Gio::DBus::BusType::BUS_TYPE_SESSION); + const auto connection = [] { + try { + return Gio::DBus::Connection::get_sync( + Gio::DBus::BusType::BUS_TYPE_SESSION); + } catch (...) { + return Glib::RefPtr(); + } + }(); + + if (!connection) { + return false; + } auto reply = connection->call_sync( std::string(kSNIWatcherObjectPath), @@ -448,7 +458,6 @@ bool IsSNIAvailable() { reply.get_child(0))); } catch (const Glib::Error &e) { static const auto NotSupportedErrors = { - "org.freedesktop.DBus.Error.Disconnected", "org.freedesktop.DBus.Error.ServiceUnknown", };