Skip to content

Commit f519e23

Browse files
committed
modify Shell::merge to take FnMut(B) -> Option<Message>
1 parent 9854bd3 commit f519e23

4 files changed

Lines changed: 5 additions & 5 deletions

File tree

core/src/element.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ where
333333
viewport,
334334
);
335335

336-
shell.merge(local_shell, &self.mapper);
336+
shell.merge(local_shell, |m| Some((self.mapper)(m)));
337337
}
338338

339339
fn draw(

core/src/overlay/element.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ where
8989
self.content
9090
.update(event, layout, cursor, renderer, &mut local_shell);
9191

92-
shell.merge(local_shell, self.mapper);
92+
shell.merge(local_shell, |m| Some((self.mapper)(m)));
9393
}
9494

9595
fn mouse_interaction(

core/src/shell.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,8 @@ impl<'a, Message> Shell<'a, Message> {
201201
/// function to the messages of the latter.
202202
///
203203
/// This method is useful for composition.
204-
pub fn merge<B>(&mut self, mut other: Shell<'_, B>, f: impl Fn(B) -> Message) {
205-
self.messages.extend(other.messages.drain(..).map(f));
204+
pub fn merge<B>(&mut self, mut other: Shell<'_, B>, f: impl FnMut(B) -> Option<Message>) {
205+
self.messages.extend(other.messages.drain(..).filter_map(f));
206206

207207
self.is_layout_invalid = match (self.is_layout_invalid, other.is_layout_invalid) {
208208
(Some(a), Some(b)) => Some(a.max(b)),

examples/toast/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ mod toast {
522522
instant.take();
523523
}
524524

525-
shell.merge(local_shell, std::convert::identity);
525+
shell.merge(local_shell, |m| Some(m));
526526
}
527527
}
528528

0 commit comments

Comments
 (0)