From 07d4411a922f1b65498b8054c193541e196d7d8e Mon Sep 17 00:00:00 2001 From: "Sergey A. Osokin" Date: Mon, 2 Oct 2023 15:39:46 -0400 Subject: [PATCH] net-im/telegram-desktop: update to 4.10.2 release --- net-im/telegram-desktop/Makefile | 2 +- net-im/telegram-desktop/distinfo | 6 +- ...rm_linux_notifications__manager__linux.cpp | 120 ++++++++++++++++++ ...atform_linux_base__linux__xdp__utilities.h | 20 +++ ...tform_linux_webview__linux__compositor.cpp | 14 -- ...atform_linux_webview__linux__webkitgtk.cpp | 48 ------- 6 files changed, 144 insertions(+), 66 deletions(-) create mode 100644 net-im/telegram-desktop/files/patch-Telegram_SourceFiles_platform_linux_notifications__manager__linux.cpp create mode 100644 net-im/telegram-desktop/files/patch-Telegram_lib__base_base_platform_linux_base__linux__xdp__utilities.h delete mode 100644 net-im/telegram-desktop/files/patch-Telegram_lib__webview_webview_platform_linux_webview__linux__compositor.cpp delete mode 100644 net-im/telegram-desktop/files/patch-Telegram_lib__webview_webview_platform_linux_webview__linux__webkitgtk.cpp diff --git a/net-im/telegram-desktop/Makefile b/net-im/telegram-desktop/Makefile index d104f840c0a7c..e0cd2f60463e6 100644 --- a/net-im/telegram-desktop/Makefile +++ b/net-im/telegram-desktop/Makefile @@ -1,5 +1,5 @@ PORTNAME= telegram-desktop -DISTVERSION= 4.9.8 +DISTVERSION= 4.10.2 CATEGORIES= net-im MASTER_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/releases/download/v${DISTVERSION}/ DISTNAME= tdesktop-${DISTVERSION}-full diff --git a/net-im/telegram-desktop/distinfo b/net-im/telegram-desktop/distinfo index 69c861bf77d04..da57f3853eef0 100644 --- a/net-im/telegram-desktop/distinfo +++ b/net-im/telegram-desktop/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1695904525 -SHA256 (tdesktop-4.9.8-full.tar.gz) = af041ecb623ee7603781e0ff2b262e15bb8de2858a9a42982a10396bc9014d53 -SIZE (tdesktop-4.9.8-full.tar.gz) = 73655253 +TIMESTAMP = 1696263386 +SHA256 (tdesktop-4.10.2-full.tar.gz) = 3f7aa12bf421a7fb6e9db9669f63bb6e1351cec2e7567551cef4ff2d936f2a27 +SIZE (tdesktop-4.10.2-full.tar.gz) = 67750091 diff --git a/net-im/telegram-desktop/files/patch-Telegram_SourceFiles_platform_linux_notifications__manager__linux.cpp b/net-im/telegram-desktop/files/patch-Telegram_SourceFiles_platform_linux_notifications__manager__linux.cpp new file mode 100644 index 0000000000000..f0ce204684780 --- /dev/null +++ b/net-im/telegram-desktop/files/patch-Telegram_SourceFiles_platform_linux_notifications__manager__linux.cpp @@ -0,0 +1,120 @@ +--- Telegram/SourceFiles/platform/linux/notifications_manager_linux.cpp.orig 2023-09-29 15:29:53 UTC ++++ Telegram/SourceFiles/platform/linux/notifications_manager_linux.cpp +@@ -53,6 +53,10 @@ bool ServiceRegistered = false; + ServerInformation CurrentServerInformation; + std::vector CurrentCapabilities; + ++[[nodiscard]] bool HasCapability(const char *value) { ++ return ranges::contains(CurrentCapabilities, value, &Glib::ustring::raw); ++} ++ + void Noexcept(Fn callback, Fn failed = nullptr) noexcept { + try { + callback(); +@@ -446,7 +450,6 @@ bool NotificationData::init( + } + + const auto weak = base::make_weak(this); +- const auto &capabilities = CurrentCapabilities; + + const auto signalEmitted = crl::guard(weak, [=]( + const Glib::RefPtr &connection, +@@ -496,7 +499,7 @@ bool NotificationData::init( + + _imageKey = GetImageKey(CurrentServerInformation.specVersion); + +- if (ranges::contains(capabilities, "body-markup")) { ++ if (HasCapability("body-markup")) { + _title = title.toStdString(); + + _body = subtitle.isEmpty() +@@ -512,7 +515,7 @@ bool NotificationData::init( + _body = msg.toStdString(); + } + +- if (ranges::contains(capabilities, "actions")) { ++ if (HasCapability("actions")) { + _actions.push_back("default"); + _actions.push_back(tr::lng_open_link(tr::now).toStdString()); + +@@ -523,7 +526,7 @@ bool NotificationData::init( + tr::lng_context_mark_read(tr::now).toStdString()); + } + +- if (ranges::contains(capabilities, "inline-reply") ++ if (HasCapability("inline-reply") + && !options.hideReplyButton) { + _actions.push_back("inline-reply"); + _actions.push_back( +@@ -553,13 +556,13 @@ bool NotificationData::init( + kObjectPath); + } + +- if (ranges::contains(capabilities, "action-icons")) { ++ if (HasCapability("action-icons")) { + _hints["action-icons"] = Glib::create_variant(true); + } + + // suppress system sound if telegram sound activated, + // otherwise use system sound +- if (ranges::contains(capabilities, "sound")) { ++ if (HasCapability("sound")) { + if (Core::App().settings().soundNotify()) { + _hints["suppress-sound"] = Glib::create_variant(true); + } else { +@@ -569,7 +572,7 @@ bool NotificationData::init( + } + } + +- if (ranges::contains(capabilities, "x-canonical-append")) { ++ if (HasCapability("x-canonical-append")) { + _hints["x-canonical-append"] = Glib::create_variant( + Glib::ustring("true")); + } +@@ -805,7 +808,7 @@ bool ByDefault() { + + // A list of capabilities that offer feature parity + // with custom notifications +- return ranges::all_of(std::initializer_list{ ++ return ranges::all_of(std::array{ + // To show message content + "body", + // To have buttons on notifications +@@ -816,7 +819,7 @@ bool ByDefault() { + // (no, using sound capability is not a way) + "inhibitions", + }, [](const auto *capability) { +- return ranges::contains(CurrentCapabilities, capability); ++ return HasCapability(capability); + }); + } + +@@ -909,7 +912,6 @@ class Manager::Private : public base::has_weak_ptr { ( + Manager::Private::Private(not_null manager) + : _manager(manager) { + const auto &serverInformation = CurrentServerInformation; +- const auto &capabilities = CurrentCapabilities; + + if (!serverInformation.name.empty()) { + LOG(("Notification daemon product name: %1") +@@ -931,17 +933,17 @@ Manager::Private::Private(not_null manager) + .arg(serverInformation.specVersion.toString())); + } + +- if (!capabilities.empty()) { ++ if (!CurrentCapabilities.empty()) { + LOG(("Notification daemon capabilities: %1").arg( + ranges::fold_left( +- capabilities, ++ CurrentCapabilities, + "", + [](const Glib::ustring &a, const Glib::ustring &b) { + return a + (a.empty() ? "" : ", ") + b; + }).c_str())); + } + +- if (ranges::contains(capabilities, "inhibitions")) { ++ if (HasCapability("inhibitions")) { + Noexcept([&] { + _dbusConnection = Gio::DBus::Connection::get_sync( + Gio::DBus::BusType::SESSION); diff --git a/net-im/telegram-desktop/files/patch-Telegram_lib__base_base_platform_linux_base__linux__xdp__utilities.h b/net-im/telegram-desktop/files/patch-Telegram_lib__base_base_platform_linux_base__linux__xdp__utilities.h new file mode 100644 index 0000000000000..79c5514df8015 --- /dev/null +++ b/net-im/telegram-desktop/files/patch-Telegram_lib__base_base_platform_linux_base__linux__xdp__utilities.h @@ -0,0 +1,20 @@ +--- Telegram/lib_base/base/platform/linux/base_linux_xdp_utilities.h.orig 2023-10-01 14:40:15 UTC ++++ Telegram/lib_base/base/platform/linux/base_linux_xdp_utilities.h +@@ -78,7 +78,7 @@ class SettingWatcher { (public) + + template + SettingWatcher(Callback callback) +- : SettingWatcher(Fn(callback)) { ++ : SettingWatcher(std::function(callback)) { + } + + template +@@ -101,7 +101,7 @@ class SettingWatcher { (public) + const Glib::ustring &group, + const Glib::ustring &key, + Callback callback) +- : SettingWatcher(group, key, Fn(callback)) { ++ : SettingWatcher(group, key, std::function(callback)) { + } + + ~SettingWatcher(); diff --git a/net-im/telegram-desktop/files/patch-Telegram_lib__webview_webview_platform_linux_webview__linux__compositor.cpp b/net-im/telegram-desktop/files/patch-Telegram_lib__webview_webview_platform_linux_webview__linux__compositor.cpp deleted file mode 100644 index c46fa3c116347..0000000000000 --- a/net-im/telegram-desktop/files/patch-Telegram_lib__webview_webview_platform_linux_webview__linux__compositor.cpp +++ /dev/null @@ -1,14 +0,0 @@ ---- Telegram/lib_webview/webview/platform/linux/webview_linux_compositor.cpp.orig 2023-09-22 07:01:01 UTC -+++ Telegram/lib_webview/webview/platform/linux/webview_linux_compositor.cpp -@@ -199,8 +199,9 @@ Compositor::Compositor() - const auto output = new Output(this, xdgSurface); - - output->chrome().surfaceCompleted() | rpl::start_with_next([=] { -- const auto parent = qvariant_cast( -- popup->parentXdgSurface()->property("output"))->window(); -+ const auto parent = (*static_cast( -+ popup->parentXdgSurface()->property("output").constData() -+ ))->window(); - if (_private->widget - && parent == _private->widget->quickWindow()) { - output->window()->setTransientParent( diff --git a/net-im/telegram-desktop/files/patch-Telegram_lib__webview_webview_platform_linux_webview__linux__webkitgtk.cpp b/net-im/telegram-desktop/files/patch-Telegram_lib__webview_webview_platform_linux_webview__linux__webkitgtk.cpp deleted file mode 100644 index 3a97b98103f6f..0000000000000 --- a/net-im/telegram-desktop/files/patch-Telegram_lib__webview_webview_platform_linux_webview__linux__webkitgtk.cpp +++ /dev/null @@ -1,48 +0,0 @@ ---- Telegram/lib_webview/webview/platform/linux/webview_linux_webkitgtk.cpp.orig 2023-09-22 07:01:01 UTC -+++ Telegram/lib_webview/webview/platform/linux/webview_linux_webkitgtk.cpp -@@ -33,6 +33,13 @@ constexpr auto kHelperObjectPath = "/org/desktop_app/G - constexpr auto kMasterObjectPath = "/org/desktop_app/GtkIntegration/Webview/Master"; - constexpr auto kHelperObjectPath = "/org/desktop_app/GtkIntegration/Webview/Helper"; - -+void (* const SetGraphicsApi)(QSGRendererInterface::GraphicsApi) = -+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) -+ QQuickWindow::setGraphicsApi; -+#else // Qt >= 6.0.0 -+ QQuickWindow::setSceneGraphBackend; -+#endif // Qt < 6.0.0 -+ - std::string SocketPath; - - inline std::string SocketPathToDBusAddress(const std::string &socketPath) { -@@ -116,12 +123,10 @@ Instance::Instance(bool remoting) - Ui::GL::CheckCapabilities(nullptr)); - switch (backend) { - case Ui::GL::Backend::Raster: -- QQuickWindow::setGraphicsApi( -- QSGRendererInterface::Software); -+ SetGraphicsApi(QSGRendererInterface::Software); - break; - case Ui::GL::Backend::OpenGL: -- QQuickWindow::setGraphicsApi( -- QSGRendererInterface::OpenGL); -+ SetGraphicsApi(QSGRendererInterface::OpenGL); - break; - } - return true; -@@ -637,11 +642,11 @@ void Instance::setOpaqueBg(QColor opaqueBg) { - return; - } - -- GdkRGBA rgba{ -- opaqueBg.redF(), -- opaqueBg.greenF(), -- opaqueBg.blueF(), -- opaqueBg.alphaF(), -+ const GdkRGBA rgba{ -+ float(opaqueBg.redF()), -+ float(opaqueBg.greenF()), -+ float(opaqueBg.blueF()), -+ float(opaqueBg.alphaF()), - }; - webkit_web_view_set_background_color( - WEBKIT_WEB_VIEW(_webview),