Avoid cloning messages unnecessarily in MouseListener

This commit is contained in:
Héctor Ramón Jiménez 2023-04-13 06:44:51 +02:00
parent 29971c9d71
commit 6b359b496c
No known key found for this signature in database
GPG key ID: 140CC052C94F138E

View file

@ -286,64 +286,64 @@ fn update<Message: Clone, Renderer>(
} }
} }
if let Some(message) = widget.on_press.clone() { if let Some(message) = widget.on_press.as_ref() {
if let Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) if let Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left))
| Event::Touch(touch::Event::FingerPressed { .. }) = event | Event::Touch(touch::Event::FingerPressed { .. }) = event
{ {
shell.publish(message); shell.publish(message.clone());
return event::Status::Captured; return event::Status::Captured;
} }
} }
if let Some(message) = widget.on_release.clone() { if let Some(message) = widget.on_release.as_ref() {
if let Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Left)) if let Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Left))
| Event::Touch(touch::Event::FingerLifted { .. }) = event | Event::Touch(touch::Event::FingerLifted { .. }) = event
{ {
shell.publish(message); shell.publish(message.clone());
return event::Status::Captured; return event::Status::Captured;
} }
} }
if let Some(message) = widget.on_right_press.clone() { if let Some(message) = widget.on_right_press.as_ref() {
if let Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Right)) = if let Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Right)) =
event event
{ {
shell.publish(message); shell.publish(message.clone());
return event::Status::Captured; return event::Status::Captured;
} }
} }
if let Some(message) = widget.on_right_release.clone() { if let Some(message) = widget.on_right_release.as_ref() {
if let Event::Mouse(mouse::Event::ButtonReleased( if let Event::Mouse(mouse::Event::ButtonReleased(
mouse::Button::Right, mouse::Button::Right,
)) = event )) = event
{ {
shell.publish(message); shell.publish(message.clone());
return event::Status::Captured; return event::Status::Captured;
} }
} }
if let Some(message) = widget.on_middle_press.clone() { if let Some(message) = widget.on_middle_press.as_ref() {
if let Event::Mouse(mouse::Event::ButtonPressed( if let Event::Mouse(mouse::Event::ButtonPressed(
mouse::Button::Middle, mouse::Button::Middle,
)) = event )) = event
{ {
shell.publish(message); shell.publish(message.clone());
return event::Status::Captured; return event::Status::Captured;
} }
} }
if let Some(message) = widget.on_middle_release.clone() { if let Some(message) = widget.on_middle_release.as_ref() {
if let Event::Mouse(mouse::Event::ButtonReleased( if let Event::Mouse(mouse::Event::ButtonReleased(
mouse::Button::Middle, mouse::Button::Middle,
)) = event )) = event
{ {
shell.publish(message); shell.publish(message.clone());
return event::Status::Captured; return event::Status::Captured;
} }