From 8b7cd4a0c72d9995aff954694469d1dd59965179 Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 6 Oct 2021 17:36:30 +0400 Subject: [PATCH] Beta version 3.1.6: Fix crash on old Windows 10 versions. --- .../win/notifications_manager_win.cpp | 23 +++++++++++++++---- .../win/windows_app_user_model_id.cpp | 6 ++++- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/Telegram/SourceFiles/platform/win/notifications_manager_win.cpp b/Telegram/SourceFiles/platform/win/notifications_manager_win.cpp index dd521ebf59..0dc53ba87e 100644 --- a/Telegram/SourceFiles/platform/win/notifications_manager_win.cpp +++ b/Telegram/SourceFiles/platform/win/notifications_manager_win.cpp @@ -109,9 +109,13 @@ bool init() { { using namespace Microsoft::WRL; - Module::GetModule().RegisterObjects(); + const auto hr = Module::GetModule().RegisterObjects(); + if (!SUCCEEDED(hr)) { + LOG(("App Error: Object registration failed.")); + } } if (!AppUserModelId::validateShortcut()) { + LOG(("App Error: Shortcut validation failed.")); return false; } @@ -707,8 +711,19 @@ bool Manager::Private::showNotificationInTryCatch( const auto string = &ToastActivation::String; if (const auto args = object.try_as()) { activation.args = string(args.Arguments().c_str()); - const auto reply = args.UserInput().TryLookup(L"fastReply"); - const auto data = reply.try_as>(); + const auto args2 = args.try_as(); + if (!args2 && activation.args.startsWith("action=reply&")) { + LOG(("WinRT Error: " + "FastReply without IToastActivatedEventArgs2 support.")); + return; + } + const auto input = args2 ? args2.UserInput() : nullptr; + const auto reply = input + ? input.TryLookup(L"fastReply") + : nullptr; + const auto data = reply + ? reply.try_as>() + : nullptr; if (data) { activation.input.push_back({ .key = u"fastReply"_q, @@ -741,7 +756,7 @@ bool Manager::Private::showNotificationInTryCatch( } }); const auto token3 = toast.Failed([=]( - const auto &sender, + const ToastNotification &sender, const ToastFailedEventArgs &args) { performOnMainQueue([notificationId](Manager *manager) { manager->clearNotification(notificationId); diff --git a/Telegram/SourceFiles/platform/win/windows_app_user_model_id.cpp b/Telegram/SourceFiles/platform/win/windows_app_user_model_id.cpp index 6645ef8ca8..690a220ff4 100644 --- a/Telegram/SourceFiles/platform/win/windows_app_user_model_id.cpp +++ b/Telegram/SourceFiles/platform/win/windows_app_user_model_id.cpp @@ -273,6 +273,7 @@ bool validateShortcutAt(const QString &path) { const auto bad2 = !good2 && (toastActivatorPropVar.vt != VT_EMPTY); PropVariantClear(&toastActivatorPropVar); if (good1 && good2) { + LOG(("App Info: Shortcut validated at \"%1\"").arg(path)); return true; } else if (bad1 || bad2) { return false; @@ -300,9 +301,11 @@ bool validateShortcutAt(const QString &path) { if (!SUCCEEDED(hr)) return false; if (persistFile->IsDirty() == S_OK) { - persistFile->Save(p.c_str(), TRUE); + hr = persistFile->Save(p.c_str(), TRUE); + if (!SUCCEEDED(hr)) return false; } + LOG(("App Info: Shortcut set and validated at \"%1\"").arg(path)); return true; } @@ -400,6 +403,7 @@ bool validateShortcut() { TRUE); if (!SUCCEEDED(hr)) return false; + LOG(("App Info: Shortcut created and validated at \"%1\"").arg(path)); return true; }