From cc724d01ac19c4c2b46c5eb4d83818b1958099c1 Mon Sep 17 00:00:00 2001 From: Ian Harrigan Date: Thu, 14 Dec 2023 10:41:47 +0100 Subject: [PATCH] by default notifications should close when actions are performed --- haxe/ui/notifications/Notification.hx | 20 ++++++++++++++++++-- haxe/ui/notifications/NotificationData.hx | 2 +- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/haxe/ui/notifications/Notification.hx b/haxe/ui/notifications/Notification.hx index 39e7a3730..4d216f0f9 100644 --- a/haxe/ui/notifications/Notification.hx +++ b/haxe/ui/notifications/Notification.hx @@ -33,10 +33,14 @@ class Notification extends VBox { super(); closeButton.onClick = function(_) { - NotificationManager.instance.removeNotification(this); + hide(); } } + public override function hide() { + NotificationManager.instance.removeNotification(this); + } + private var _notificationData:NotificationData = null; public var notificationData(get, set):NotificationData; private function get_notificationData():NotificationData { @@ -87,14 +91,26 @@ class Notification extends VBox { } private function onActionButton(event:MouseEvent) { + var closeNotification = true; + var notificationEvent = new NotificationEvent(NotificationEvent.ACTION); notificationEvent.notification = this; dispatch(notificationEvent); + if (notificationEvent.canceled) { + closeNotification = false; + } NotificationManager.instance.dispatch(notificationEvent, this); + if (notificationEvent.canceled) { + closeNotification = false; + } var actionData:NotificationActionData = event.target.userData; if (actionData.callback != null) { - actionData.callback(actionData); + closeNotification = actionData.callback(actionData); + } + + if (closeNotification) { + hide(); } } } \ No newline at end of file diff --git a/haxe/ui/notifications/NotificationData.hx b/haxe/ui/notifications/NotificationData.hx index 785c857d7..cbec57b6f 100644 --- a/haxe/ui/notifications/NotificationData.hx +++ b/haxe/ui/notifications/NotificationData.hx @@ -15,5 +15,5 @@ typedef NotificationData = { typedef NotificationActionData = { @:optional var text:String; @:optional var icon:Variant; - @:optional var callback:NotificationActionData->Void; + @:optional var callback:NotificationActionData->Bool; } \ No newline at end of file