diff --git a/src/notification_popover.rs b/src/notification_popover.rs index 9c82a21f..8736a9e0 100644 --- a/src/notification_popover.rs +++ b/src/notification_popover.rs @@ -63,6 +63,11 @@ impl NotificationPopover { notifications.connect_notification_recieved(clone!(@weak obj => move |notification| { obj.handle_notification(¬ification); })); + notifications.connect_notification_closed(clone!(@weak obj => move |id| { + if obj.inner().notification_widget.id() == Some(id) { + obj.popdown(); + } + })); obj } diff --git a/src/notification_widget.rs b/src/notification_widget.rs index afd4e89b..af8589f2 100644 --- a/src/notification_widget.rs +++ b/src/notification_widget.rs @@ -65,7 +65,7 @@ impl ObjectImpl for NotificationWidgetInner { ..set_pixel_size(8); })); ..connect_clicked(clone!(@weak obj => move |_| { - if let Some(id) = obj.inner().id.get() { + if let Some(id) = obj.id() { obj.inner().notifications.dismiss(id); } })); @@ -106,4 +106,8 @@ impl NotificationWidget { self.inner().body_label.set_label(¬ification.body); self.inner().id.set(Some(notification.id)); } + + pub fn id(&self) -> Option { + self.inner().id.get() + } }