@@ -274,13 +274,14 @@ namespace Util {
274
274
return hr;
275
275
}
276
276
277
+ template <typename FunctorT>
277
278
inline HRESULT setEventHandlers (_In_ IToastNotification* notification, _In_ std::shared_ptr<IWinToastHandler> eventHandler,
278
279
_In_ INT64 expirationTime, _Out_ EventRegistrationToken& activatedToken,
279
280
_Out_ EventRegistrationToken& dismissedToken, _Out_ EventRegistrationToken& failedToken,
280
- std::function< void ()> processForDeletionFunc ) {
281
+ _In_ FunctorT&& markAsReadyForDeletionFunc ) {
281
282
HRESULT hr = notification->add_Activated (
282
283
Callback<Implements<RuntimeClassFlags<ClassicCom>, ITypedEventHandler<ToastNotification*, IInspectable*>>>(
283
- [eventHandler, processForDeletionFunc ](IToastNotification* notify, IInspectable* inspectable) {
284
+ [eventHandler, markAsReadyForDeletionFunc ](IToastNotification* notify, IInspectable* inspectable) {
284
285
ComPtr<IToastActivatedEventArgs> activatedEventArgs;
285
286
HRESULT hr = inspectable->QueryInterface (activatedEventArgs.GetAddressOf ());
286
287
if (SUCCEEDED (hr)) {
@@ -291,14 +292,14 @@ namespace Util {
291
292
if (arguments && *arguments) {
292
293
eventHandler->toastActivated (static_cast <int >(wcstol (arguments, nullptr , 10 )));
293
294
DllImporter::WindowsDeleteString (argumentsHandle);
294
- processForDeletionFunc ();
295
+ markAsReadyForDeletionFunc ();
295
296
return S_OK;
296
297
}
297
298
DllImporter::WindowsDeleteString (argumentsHandle);
298
299
}
299
300
}
300
301
eventHandler->toastActivated ();
301
- processForDeletionFunc ();
302
+ markAsReadyForDeletionFunc ();
302
303
return S_OK;
303
304
})
304
305
.Get (),
@@ -307,7 +308,7 @@ namespace Util {
307
308
if (SUCCEEDED (hr)) {
308
309
hr = notification->add_Dismissed (
309
310
Callback<Implements<RuntimeClassFlags<ClassicCom>, ITypedEventHandler<ToastNotification*, ToastDismissedEventArgs*>>>(
310
- [eventHandler, expirationTime, processForDeletionFunc ](IToastNotification* notify, IToastDismissedEventArgs* e) {
311
+ [eventHandler, expirationTime, markAsReadyForDeletionFunc ](IToastNotification* notify, IToastDismissedEventArgs* e) {
311
312
ToastDismissalReason reason;
312
313
if (SUCCEEDED (e->get_Reason (&reason))) {
313
314
if (reason == ToastDismissalReason_UserCanceled && expirationTime &&
@@ -316,17 +317,17 @@ namespace Util {
316
317
}
317
318
eventHandler->toastDismissed (static_cast <IWinToastHandler::WinToastDismissalReason>(reason));
318
319
}
319
- processForDeletionFunc ();
320
+ markAsReadyForDeletionFunc ();
320
321
return S_OK;
321
322
})
322
323
.Get (),
323
324
&dismissedToken);
324
325
if (SUCCEEDED (hr)) {
325
326
hr = notification->add_Failed (
326
327
Callback<Implements<RuntimeClassFlags<ClassicCom>, ITypedEventHandler<ToastNotification*, ToastFailedEventArgs*>>>(
327
- [eventHandler, processForDeletionFunc ](IToastNotification* notify, IToastFailedEventArgs* e) {
328
+ [eventHandler, markAsReadyForDeletionFunc ](IToastNotification* notify, IToastFailedEventArgs* e) {
328
329
eventHandler->toastFailed ();
329
- processForDeletionFunc ();
330
+ markAsReadyForDeletionFunc ();
330
331
return S_OK;
331
332
})
332
333
.Get (),
0 commit comments