diff --git a/atom/browser/notifications/win/win32_desktop_notifications/toast.cc b/atom/browser/notifications/win/win32_desktop_notifications/toast.cc index eca973277f471..4912ee9b4d07f 100644 --- a/atom/browser/notifications/win/win32_desktop_notifications/toast.cc +++ b/atom/browser/notifications/win/win32_desktop_notifications/toast.cc @@ -269,10 +269,16 @@ LRESULT DesktopNotificationController::Toast::WndProc(HWND hwnd, case WM_MOUSEACTIVATE: return MA_NOACTIVATE; - case WM_TIMER: + case WM_TIMER: { if (wparam == TimerID_AutoDismiss) { - Get(hwnd)->AutoDismiss(); + auto* inst = Get(hwnd); + + Notification notification(inst->data_); + inst->data_->controller->OnNotificationDismissed(notification); + + inst->AutoDismiss(); } + } return 0; case WM_LBUTTONDOWN: { diff --git a/atom/browser/notifications/win/win32_notification.cc b/atom/browser/notifications/win/win32_notification.cc index aba61f4910179..b7a48317d82d1 100644 --- a/atom/browser/notifications/win/win32_notification.cc +++ b/atom/browser/notifications/win/win32_notification.cc @@ -47,8 +47,12 @@ void Win32Notification::Show(const NotificationOptions& options) { if (existing) { existing->tag_.clear(); + this->notification_ref_ = std::move(existing->notification_ref_); this->notification_ref_.Set(options.title, options.msg, image); + // Need to remove the entry in the notifications set that + // NotificationPresenter is holding + existing->Destroy(); } else { this->notification_ref_ = presenter->AddNotification(options.title, options.msg, image);