From ca67ac913fbb51d431dacd5fc06c56109bb176b8 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Thu, 15 Oct 2020 20:31:40 +0400 Subject: [PATCH] Check for KDE portal backend when using portals on KDE --- .../platform/linux/specific_linux.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/Telegram/SourceFiles/platform/linux/specific_linux.cpp b/Telegram/SourceFiles/platform/linux/specific_linux.cpp index 799e0f3fa3..d88e91c80f 100644 --- a/Telegram/SourceFiles/platform/linux/specific_linux.cpp +++ b/Telegram/SourceFiles/platform/linux/specific_linux.cpp @@ -123,6 +123,14 @@ void PortalAutostart(bool autostart, bool silent = false) { } } +bool IsXDGDesktopPortalKDEPresent() { + static const auto Result = QDBusInterface( + qsl("org.freedesktop.impl.portal.desktop.kde"), + kXDGDesktopPortalObjectPath.utf16()).isValid(); + + return Result; +} + uint FileChooserPortalVersion() { static const auto Result = [&]() -> uint { auto message = QDBusMessage::createMethodCall( @@ -731,17 +739,20 @@ bool IsXDGDesktopPortalPresent() { } bool UseXDGDesktopPortal() { +#ifndef DESKTOP_APP_DISABLE_DBUS_INTEGRATION static const auto Result = [&] { const auto envVar = qEnvironmentVariableIsSet("TDESKTOP_USE_PORTAL"); const auto portalPresent = IsXDGDesktopPortalPresent(); + const auto neededForKde = DesktopEnvironment::IsKDE() + && IsXDGDesktopPortalKDEPresent(); - return ( - DesktopEnvironment::IsKDE() - || envVar - ) && portalPresent; + return (neededForKde || envVar) && portalPresent; }(); return Result; +#endif // !DESKTOP_APP_DISABLE_DBUS_INTEGRATION + + return false; } bool CanOpenDirectoryWithPortal() {