From dcc184b01b753dbecb500205391f6eaaa21c8683 Mon Sep 17 00:00:00 2001
From: Héctor Ramón Jiménez <hector@hecrj.dev>
Date: Fri, 25 Oct 2024 19:28:18 +0200
Subject: Replace `event::Status` in `Widget::on_event` with
 `Shell::capture_event`

---
 runtime/src/overlay/nested.rs | 74 ++++++++++++++++++++-----------------------
 runtime/src/user_interface.rs | 10 +++---
 2 files changed, 40 insertions(+), 44 deletions(-)

(limited to 'runtime')

diff --git a/runtime/src/overlay/nested.rs b/runtime/src/overlay/nested.rs
index da3e6929..45f6b220 100644
--- a/runtime/src/overlay/nested.rs
+++ b/runtime/src/overlay/nested.rs
@@ -166,7 +166,7 @@ where
         renderer: &Renderer,
         clipboard: &mut dyn Clipboard,
         shell: &mut Shell<'_, Message>,
-    ) -> event::Status {
+    ) {
         fn recurse<Message, Theme, Renderer>(
             element: &mut overlay::Element<'_, Message, Theme, Renderer>,
             layout: Layout<'_>,
@@ -175,31 +175,30 @@ where
             renderer: &Renderer,
             clipboard: &mut dyn Clipboard,
             shell: &mut Shell<'_, Message>,
-        ) -> (event::Status, bool)
+        ) -> bool
         where
             Renderer: renderer::Renderer,
         {
             let mut layouts = layout.children();
 
             if let Some(layout) = layouts.next() {
-                let (nested_status, nested_is_over) =
-                    if let Some((mut nested, nested_layout)) =
-                        element.overlay(layout, renderer).zip(layouts.next())
-                    {
-                        recurse(
-                            &mut nested,
-                            nested_layout,
-                            event.clone(),
-                            cursor,
-                            renderer,
-                            clipboard,
-                            shell,
-                        )
-                    } else {
-                        (event::Status::Ignored, false)
-                    };
+                let nested_is_over = if let Some((mut nested, nested_layout)) =
+                    element.overlay(layout, renderer).zip(layouts.next())
+                {
+                    recurse(
+                        &mut nested,
+                        nested_layout,
+                        event.clone(),
+                        cursor,
+                        renderer,
+                        clipboard,
+                        shell,
+                    )
+                } else {
+                    false
+                };
 
-                if matches!(nested_status, event::Status::Ignored) {
+                if shell.event_status() == event::Status::Ignored {
                     let is_over = nested_is_over
                         || cursor
                             .position()
@@ -212,30 +211,29 @@ where
                             })
                             .unwrap_or_default();
 
-                    (
-                        element.on_event(
-                            event,
-                            layout,
-                            if nested_is_over {
-                                mouse::Cursor::Unavailable
-                            } else {
-                                cursor
-                            },
-                            renderer,
-                            clipboard,
-                            shell,
-                        ),
-                        is_over,
-                    )
+                    element.on_event(
+                        event,
+                        layout,
+                        if nested_is_over {
+                            mouse::Cursor::Unavailable
+                        } else {
+                            cursor
+                        },
+                        renderer,
+                        clipboard,
+                        shell,
+                    );
+
+                    is_over
                 } else {
-                    (nested_status, nested_is_over)
+                    nested_is_over
                 }
             } else {
-                (event::Status::Ignored, false)
+                false
             }
         }
 
-        let (status, _) = recurse(
+        let _ = recurse(
             &mut self.overlay,
             layout,
             event,
@@ -244,8 +242,6 @@ where
             clipboard,
             shell,
         );
-
-        status
     }
 
     /// Returns the current [`mouse::Interaction`] of the [`Nested`] overlay.
diff --git a/runtime/src/user_interface.rs b/runtime/src/user_interface.rs
index 8dfc97a7..cae17bcc 100644
--- a/runtime/src/user_interface.rs
+++ b/runtime/src/user_interface.rs
@@ -210,7 +210,7 @@ where
             for event in events.iter().cloned() {
                 let mut shell = Shell::new(messages);
 
-                let event_status = overlay.on_event(
+                overlay.on_event(
                     event,
                     Layout::new(&layout),
                     cursor,
@@ -219,7 +219,7 @@ where
                     &mut shell,
                 );
 
-                event_statuses.push(event_status);
+                event_statuses.push(shell.event_status());
 
                 match (redraw_request, shell.redraw_request()) {
                     (None, Some(at)) => {
@@ -308,7 +308,7 @@ where
 
                 let mut shell = Shell::new(messages);
 
-                let event_status = self.root.as_widget_mut().on_event(
+                self.root.as_widget_mut().on_event(
                     &mut self.state,
                     event,
                     Layout::new(&self.base),
@@ -319,7 +319,7 @@ where
                     &viewport,
                 );
 
-                if matches!(event_status, event::Status::Captured) {
+                if shell.event_status() == event::Status::Captured {
                     self.overlay = None;
                 }
 
@@ -347,7 +347,7 @@ where
                     outdated = true;
                 }
 
-                event_status.merge(overlay_status)
+                shell.event_status().merge(overlay_status)
             })
             .collect();
 
-- 
cgit