From dbc9beaa199c2d00262500a6099a80b4afea4ad5 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Wed, 22 Oct 2025 07:06:28 +0000 Subject: [PATCH] Make psLaunchMaps async --- .../history/history_location_manager.cpp | 6 +-- .../platform/linux/specific_linux.cpp | 8 ++-- .../platform/linux/specific_linux.h | 6 --- .../SourceFiles/platform/mac/specific_mac.h | 6 --- .../SourceFiles/platform/mac/specific_mac.mm | 13 +++++-- .../SourceFiles/platform/platform_specific.h | 5 +++ .../SourceFiles/platform/win/specific_win.cpp | 38 ++++++++++--------- .../SourceFiles/platform/win/specific_win.h | 6 --- 8 files changed, 42 insertions(+), 46 deletions(-) diff --git a/Telegram/SourceFiles/history/history_location_manager.cpp b/Telegram/SourceFiles/history/history_location_manager.cpp index 7810460bdf..6cf1ecfddd 100644 --- a/Telegram/SourceFiles/history/history_location_manager.cpp +++ b/Telegram/SourceFiles/history/history_location_manager.cpp @@ -23,9 +23,9 @@ QString LocationClickHandler::copyToClipboardContextItemText() const { } void LocationClickHandler::onClick(ClickContext context) const { - if (!psLaunchMaps(_point)) { - File::OpenUrl(_text); - } + Platform::LaunchMaps(_point, [text = _text] { + File::OpenUrl(text); + }); } void LocationClickHandler::setup() { diff --git a/Telegram/SourceFiles/platform/linux/specific_linux.cpp b/Telegram/SourceFiles/platform/linux/specific_linux.cpp index 1332a39b96..d569503eb4 100644 --- a/Telegram/SourceFiles/platform/linux/specific_linux.cpp +++ b/Telegram/SourceFiles/platform/linux/specific_linux.cpp @@ -780,6 +780,10 @@ QString ApplicationIconName() { return Result; } +void LaunchMaps(const Data::LocationPoint &point, Fn fail) { + fail(); +} + namespace ThirdParty { void start() { @@ -837,7 +841,3 @@ bool linuxMoveFile(const char *from, const char *to) { return true; } - -bool psLaunchMaps(const Data::LocationPoint &point) { - return false; -} diff --git a/Telegram/SourceFiles/platform/linux/specific_linux.h b/Telegram/SourceFiles/platform/linux/specific_linux.h index e5e40cd2e1..ae3c4670c0 100644 --- a/Telegram/SourceFiles/platform/linux/specific_linux.h +++ b/Telegram/SourceFiles/platform/linux/specific_linux.h @@ -9,10 +9,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "platform/platform_specific.h" -namespace Data { -class LocationPoint; -} // namespace Data - namespace Platform { inline void IgnoreApplicationActivationRightNow() { @@ -60,5 +56,3 @@ inline void psDownloadPathEnableAccess() { } bool linuxMoveFile(const char *from, const char *to); - -bool psLaunchMaps(const Data::LocationPoint &point); diff --git a/Telegram/SourceFiles/platform/mac/specific_mac.h b/Telegram/SourceFiles/platform/mac/specific_mac.h index 6c95b507b4..3c14de2af4 100644 --- a/Telegram/SourceFiles/platform/mac/specific_mac.h +++ b/Telegram/SourceFiles/platform/mac/specific_mac.h @@ -10,10 +10,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "platform/platform_specific.h" #include "platform/mac/specific_mac_p.h" -namespace Data { -class LocationPoint; -} // namespace Data - namespace Platform { inline bool AutostartSupported() { @@ -72,5 +68,3 @@ int psFixPrevious(); void psDownloadPathEnableAccess(); QByteArray psDownloadPathBookmark(const QString &path); QByteArray psPathBookmark(const QString &path); - -bool psLaunchMaps(const Data::LocationPoint &point); diff --git a/Telegram/SourceFiles/platform/mac/specific_mac.mm b/Telegram/SourceFiles/platform/mac/specific_mac.mm index 8a7e3c7137..51a09b5b5f 100644 --- a/Telegram/SourceFiles/platform/mac/specific_mac.mm +++ b/Telegram/SourceFiles/platform/mac/specific_mac.mm @@ -267,6 +267,15 @@ void ActivateThisProcess() { objc_activateProgram(window ? window->widget()->winId() : 0); } +void LaunchMaps(const Data::LocationPoint &point, Fn fail) { + if (!QDesktopServices::openUrl( + u"https://maps.apple.com/?q=Point&z=16&ll=%1,%2"_q.arg( + point.latAsString(), + point.lonAsString()))) { + fail(); + } +} + } // namespace Platform void psSendToMenu(bool send, bool silent) { @@ -279,7 +288,3 @@ void psDownloadPathEnableAccess() { QByteArray psDownloadPathBookmark(const QString &path) { return objc_downloadPathBookmark(path); } - -bool psLaunchMaps(const Data::LocationPoint &point) { - return QDesktopServices::openUrl(u"https://maps.apple.com/?q=Point&z=16&ll=%1,%2"_q.arg(point.latAsString()).arg(point.lonAsString())); -} diff --git a/Telegram/SourceFiles/platform/platform_specific.h b/Telegram/SourceFiles/platform/platform_specific.h index 55561ef2fe..862e3c3a67 100644 --- a/Telegram/SourceFiles/platform/platform_specific.h +++ b/Telegram/SourceFiles/platform/platform_specific.h @@ -11,6 +11,10 @@ namespace Core { enum class QuitReason; } // namespace Core +namespace Data { +class LocationPoint; +} // namespace Data + namespace Platform { void start(); @@ -50,6 +54,7 @@ void NewVersionLaunched(int oldVersion); [[nodiscard]] QString ApplicationIconName(); [[nodiscard]] bool PreventsQuit(Core::QuitReason reason); [[nodiscard]] QString ExecutablePathForShortcuts(); +void LaunchMaps(const Data::LocationPoint &point, Fn fail); #if QT_VERSION < QT_VERSION_CHECK(6, 5, 0) [[nodiscard]] std::optional IsDarkMode(); diff --git a/Telegram/SourceFiles/platform/win/specific_win.cpp b/Telegram/SourceFiles/platform/win/specific_win.cpp index df143666ee..7ca0a68de9 100644 --- a/Telegram/SourceFiles/platform/win/specific_win.cpp +++ b/Telegram/SourceFiles/platform/win/specific_win.cpp @@ -670,24 +670,13 @@ QImage DefaultApplicationIcon() { return Window::Logo(); } -} // namespace Platform - -void psSendToMenu(bool send, bool silent) { - ManageAppLink( - send, - silent, - FOLDERID_SendTo, - L"-sendpath", - L"Telegram send to link.\n" - "You can disable send to menu item in Telegram settings."); -} - -bool psLaunchMaps(const Data::LocationPoint &point) { +void LaunchMaps(const Data::LocationPoint &point, Fn fail) { const auto aar = base::WinRT::TryCreateInstance< IApplicationAssociationRegistration >(CLSID_ApplicationAssociationRegistration); if (!aar) { - return false; + fail(); + return; } auto handler = base::CoTaskMemString(); @@ -700,12 +689,27 @@ bool psLaunchMaps(const Data::LocationPoint &point) { || !handler || !handler.data() || std::wstring(handler.data()) == L"bingmaps") { - return false; + fail(); + return; } const auto url = u"bingmaps:?lvl=16&collection=point.%1_%2_Point"_q; - return QDesktopServices::openUrl( - url.arg(point.latAsString()).arg(point.lonAsString())); + if (!QDesktopServices::openUrl( + url.arg(point.latAsString(), point.lonAsString()))) { + fail(); + } +} + +} // namespace Platform + +void psSendToMenu(bool send, bool silent) { + ManageAppLink( + send, + silent, + FOLDERID_SendTo, + L"-sendpath", + L"Telegram send to link.\n" + "You can disable send to menu item in Telegram settings."); } // Stub while we still support Windows 7. diff --git a/Telegram/SourceFiles/platform/win/specific_win.h b/Telegram/SourceFiles/platform/win/specific_win.h index 12a2f4cb5a..39a4103e34 100644 --- a/Telegram/SourceFiles/platform/win/specific_win.h +++ b/Telegram/SourceFiles/platform/win/specific_win.h @@ -11,10 +11,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include -namespace Data { -class LocationPoint; -} // namespace Data - namespace Platform { inline void IgnoreApplicationActivationRightNow() { @@ -73,5 +69,3 @@ inline QByteArray psDownloadPathBookmark(const QString &path) { } inline void psDownloadPathEnableAccess() { } - -bool psLaunchMaps(const Data::LocationPoint &point);