Make DismissEvent a unit struct

Max Brunsfeld and Conrad created

Co-authored-by: Conrad <conrad@zed.dev>

Change summary

crates/auto_update2/src/update_notification.rs       |  2 
crates/collab_ui2/src/collab_panel/contact_finder.rs |  2 
crates/command_palette2/src/command_palette.rs       |  2 
crates/file_finder2/src/file_finder.rs               |  6 +---
crates/go_to_line2/src/go_to_line.rs                 |  6 ++--
crates/gpui2/src/app/async_context.rs                |  5 +--
crates/gpui2/src/app/test_context.rs                 |  2 
crates/gpui2/src/window.rs                           |  8 ++----
crates/project_panel2/src/project_panel.rs           |  8 ++----
crates/ui2/src/components/context_menu.rs            | 15 +++++--------
crates/workspace2/src/notifications.rs               |  8 ++----
11 files changed, 26 insertions(+), 38 deletions(-)

Detailed changes

crates/collab_ui2/src/collab_panel/contact_finder.rs 🔗

@@ -161,7 +161,7 @@ impl PickerDelegate for ContactFinderDelegate {
     fn dismissed(&mut self, cx: &mut ViewContext<Picker<Self>>) {
         //cx.emit(PickerEvent::Dismiss);
         self.parent
-            .update(cx, |_, cx| cx.emit(DismissEvent::Dismiss))
+            .update(cx, |_, cx| cx.emit(DismissEvent))
             .log_err();
     }
 

crates/command_palette2/src/command_palette.rs 🔗

@@ -267,7 +267,7 @@ impl PickerDelegate for CommandPaletteDelegate {
 
     fn dismissed(&mut self, cx: &mut ViewContext<Picker<Self>>) {
         self.command_palette
-            .update(cx, |_, cx| cx.emit(DismissEvent::Dismiss))
+            .update(cx, |_, cx| cx.emit(DismissEvent))
             .log_err();
     }
 

crates/file_finder2/src/file_finder.rs 🔗

@@ -687,9 +687,7 @@ impl PickerDelegate for FileFinderDelegate {
                                 .log_err();
                         }
                     }
-                    finder
-                        .update(&mut cx, |_, cx| cx.emit(DismissEvent::Dismiss))
-                        .ok()?;
+                    finder.update(&mut cx, |_, cx| cx.emit(DismissEvent)).ok()?;
 
                     Some(())
                 })
@@ -700,7 +698,7 @@ impl PickerDelegate for FileFinderDelegate {
 
     fn dismissed(&mut self, cx: &mut ViewContext<Picker<FileFinderDelegate>>) {
         self.file_finder
-            .update(cx, |_, cx| cx.emit(DismissEvent::Dismiss))
+            .update(cx, |_, cx| cx.emit(DismissEvent))
             .log_err();
     }
 

crates/go_to_line2/src/go_to_line.rs 🔗

@@ -90,7 +90,7 @@ impl GoToLine {
     ) {
         match event {
             // todo!() this isn't working...
-            editor::EditorEvent::Blurred => cx.emit(DismissEvent::Dismiss),
+            editor::EditorEvent::Blurred => cx.emit(DismissEvent),
             editor::EditorEvent::BufferEdited { .. } => self.highlight_current_line(cx),
             _ => {}
         }
@@ -125,7 +125,7 @@ impl GoToLine {
     }
 
     fn cancel(&mut self, _: &menu::Cancel, cx: &mut ViewContext<Self>) {
-        cx.emit(DismissEvent::Dismiss);
+        cx.emit(DismissEvent);
     }
 
     fn confirm(&mut self, _: &menu::Confirm, cx: &mut ViewContext<Self>) {
@@ -142,7 +142,7 @@ impl GoToLine {
             self.prev_scroll_position.take();
         }
 
-        cx.emit(DismissEvent::Dismiss);
+        cx.emit(DismissEvent);
     }
 }
 

crates/gpui2/src/app/async_context.rs 🔗

@@ -325,8 +325,7 @@ impl VisualContext for AsyncWindowContext {
     where
         V: crate::ManagedView,
     {
-        self.window.update(self, |_, cx| {
-            view.update(cx, |_, cx| cx.emit(DismissEvent::Dismiss))
-        })
+        self.window
+            .update(self, |_, cx| view.update(cx, |_, cx| cx.emit(DismissEvent)))
     }
 }

crates/gpui2/src/app/test_context.rs 🔗

@@ -611,7 +611,7 @@ impl<'a> VisualContext for VisualTestContext<'a> {
     {
         self.window
             .update(self.cx, |_, cx| {
-                view.update(cx, |_, cx| cx.emit(crate::DismissEvent::Dismiss))
+                view.update(cx, |_, cx| cx.emit(crate::DismissEvent))
             })
             .unwrap()
     }

crates/gpui2/src/window.rs 🔗

@@ -197,9 +197,7 @@ pub trait ManagedView: FocusableView + EventEmitter<DismissEvent> {}
 
 impl<M: FocusableView + EventEmitter<DismissEvent>> ManagedView for M {}
 
-pub enum DismissEvent {
-    Dismiss,
-}
+pub struct DismissEvent;
 
 // Holds the state for a specific window.
 pub struct Window {
@@ -1701,7 +1699,7 @@ impl VisualContext for WindowContext<'_> {
     where
         V: ManagedView,
     {
-        self.update_view(view, |_, cx| cx.emit(DismissEvent::Dismiss))
+        self.update_view(view, |_, cx| cx.emit(DismissEvent))
     }
 }
 
@@ -2405,7 +2403,7 @@ impl<'a, V: 'static> ViewContext<'a, V> {
     where
         V: ManagedView,
     {
-        self.defer(|_, cx| cx.emit(DismissEvent::Dismiss))
+        self.defer(|_, cx| cx.emit(DismissEvent))
     }
 
     pub fn listener<E>(

crates/project_panel2/src/project_panel.rs 🔗

@@ -448,11 +448,9 @@ impl ProjectPanel {
             });
 
             cx.focus_view(&context_menu);
-            let subscription = cx.subscribe(&context_menu, |this, _, event, cx| match event {
-                DismissEvent::Dismiss => {
-                    this.context_menu.take();
-                    cx.notify();
-                }
+            let subscription = cx.subscribe(&context_menu, |this, _, _: &DismissEvent, cx| {
+                this.context_menu.take();
+                cx.notify();
             });
             self.context_menu = Some((context_menu, position, subscription));
         }

crates/ui2/src/components/context_menu.rs 🔗

@@ -94,11 +94,11 @@ impl ContextMenu {
         {
             (handler)(cx)
         }
-        cx.emit(DismissEvent::Dismiss);
+        cx.emit(DismissEvent);
     }
 
     pub fn cancel(&mut self, _: &menu::Cancel, cx: &mut ViewContext<Self>) {
-        cx.emit(DismissEvent::Dismiss);
+        cx.emit(DismissEvent);
     }
 
     fn select_first(&mut self, _: &SelectFirst, cx: &mut ViewContext<Self>) {
@@ -181,8 +181,7 @@ impl Render for ContextMenu {
                                 key_binding,
                             } => {
                                 let callback = callback.clone();
-                                let dismiss =
-                                    cx.listener(|_, _, cx| cx.emit(DismissEvent::Dismiss));
+                                let dismiss = cx.listener(|_, _, cx| cx.emit(DismissEvent));
 
                                 ListItem::new(entry.clone())
                                     .child(
@@ -348,11 +347,9 @@ impl<M: ManagedView> Element for MenuHandle<M> {
 
                 let new_menu = (builder)(cx);
                 let menu2 = menu.clone();
-                cx.subscribe(&new_menu, move |_modal, e, cx| match e {
-                    &DismissEvent::Dismiss => {
-                        *menu2.borrow_mut() = None;
-                        cx.notify();
-                    }
+                cx.subscribe(&new_menu, move |_modal, _: &DismissEvent, cx| {
+                    *menu2.borrow_mut() = None;
+                    cx.notify();
                 })
                 .detach();
                 cx.focus_view(&new_menu);

crates/workspace2/src/notifications.rs 🔗

@@ -106,10 +106,8 @@ impl Workspace {
             let notification = build_notification(cx);
             cx.subscribe(
                 &notification,
-                move |this, handle, event: &DismissEvent, cx| match event {
-                    DismissEvent::Dismiss => {
-                        this.dismiss_notification_internal(type_id, id, cx);
-                    }
+                move |this, handle, event: &DismissEvent, cx| {
+                    this.dismiss_notification_internal(type_id, id, cx);
                 },
             )
             .detach();
@@ -260,7 +258,7 @@ pub mod simple_message_notification {
         }
 
         pub fn dismiss(&mut self, cx: &mut ViewContext<Self>) {
-            cx.emit(DismissEvent::Dismiss);
+            cx.emit(DismissEvent);
         }
     }