workspace: Add clear notifications command (#13320)

loczek created

Release Notes:

- Added the `workspace: clear all notifications` command to clear
notifications
([#10761](https://github.com/zed-industries/zed/issues/10761))


https://github.com/zed-industries/zed/assets/30776250/36f2c3f3-5b5e-4f98-9418-8806ce311504

Change summary

crates/workspace/src/notifications.rs | 5 +++++
crates/workspace/src/workspace.rs     | 6 ++++++
2 files changed, 11 insertions(+)

Detailed changes

crates/workspace/src/notifications.rs 🔗

@@ -191,6 +191,11 @@ impl Workspace {
         self.dismiss_notification(id, cx);
     }
 
+    pub fn clear_all_notifications(&mut self, cx: &mut ViewContext<Self>) {
+        self.notifications.clear();
+        cx.notify();
+    }
+
     fn dismiss_notification_internal(&mut self, id: &NotificationId, cx: &mut ViewContext<Self>) {
         self.notifications.retain(|(existing_id, _)| {
             if existing_id == id {

crates/workspace/src/workspace.rs 🔗

@@ -115,6 +115,7 @@ actions!(
         ActivateNextPane,
         ActivatePreviousPane,
         AddFolderToProject,
+        ClearAllNotifications,
         CloseAllDocks,
         CloseWindow,
         Feedback,
@@ -3896,6 +3897,11 @@ impl Workspace {
                     workspace.close_all_docks(cx);
                 }),
             )
+            .on_action(
+                cx.listener(|workspace: &mut Workspace, _: &ClearAllNotifications, cx| {
+                    workspace.clear_all_notifications(cx);
+                }),
+            )
             .on_action(cx.listener(Workspace::open))
             .on_action(cx.listener(Workspace::close_window))
             .on_action(cx.listener(Workspace::activate_pane_at_index))