mirror of
https://github.com/electron/electron.git
synced 2026-01-10 07:58:08 -05:00
fix: reply notifs sometimes destroyed too early (#25086)
* fix: reply notifs sometimes destroyed too early * Fix windows build
This commit is contained in:
@@ -43,7 +43,10 @@
|
||||
// https://developer.apple.com/documentation/foundation/nsusernotificationactivationtype?language=objc
|
||||
if (notif.activationType ==
|
||||
NSUserNotificationActivationTypeContentsClicked) {
|
||||
notification->NotificationClicked();
|
||||
// If a notification with a reply button is clicked and the user has not
|
||||
// yet replied, we do not want to destroy the notification.
|
||||
bool should_destroy = ![notif hasReplyButton];
|
||||
notification->NotificationClicked(should_destroy);
|
||||
} else if (notif.activationType ==
|
||||
NSUserNotificationActivationTypeActionButtonClicked) {
|
||||
notification->NotificationActivated();
|
||||
|
||||
@@ -21,10 +21,12 @@ Notification::~Notification() {
|
||||
delegate()->NotificationDestroyed();
|
||||
}
|
||||
|
||||
void Notification::NotificationClicked() {
|
||||
void Notification::NotificationClicked(bool should_destroy) {
|
||||
if (delegate())
|
||||
delegate()->NotificationClick();
|
||||
Destroy();
|
||||
|
||||
if (should_destroy)
|
||||
Destroy();
|
||||
}
|
||||
|
||||
void Notification::NotificationDismissed() {
|
||||
|
||||
@@ -54,7 +54,7 @@ class Notification {
|
||||
virtual void Dismiss() = 0;
|
||||
|
||||
// Should be called by derived classes.
|
||||
void NotificationClicked();
|
||||
void NotificationClicked(bool should_destroy = true);
|
||||
void NotificationDismissed();
|
||||
void NotificationFailed();
|
||||
|
||||
|
||||
@@ -476,7 +476,7 @@ IFACEMETHODIMP ToastEventHandler::Invoke(
|
||||
IInspectable* args) {
|
||||
base::PostTask(
|
||||
FROM_HERE, {content::BrowserThread::UI},
|
||||
base::BindOnce(&Notification::NotificationClicked, notification_));
|
||||
base::BindOnce(&Notification::NotificationClicked, notification_, true));
|
||||
if (IsDebuggingNotifications())
|
||||
LOG(INFO) << "Notification clicked";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user