Skip to content

Commit 2c38017

Browse files
committed
[fix] event dispatching to not send an event to multiple components.
1 parent ea542bb commit 2c38017

1 file changed

Lines changed: 12 additions & 5 deletions

File tree

crates/lambda-rs/src/runtimes/application.rs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -195,19 +195,19 @@ const EVENT_CATEGORY_COUNT: usize = 5;
195195
/// outside the supported categories so the runtime can surface the invariant
196196
/// violation without panicking.
197197
fn event_listener_bucket(event_mask: EventMask) -> Result<usize, String> {
198-
if event_mask.contains(EventMask::WINDOW) {
198+
if event_mask == EventMask::WINDOW {
199199
return Ok(0);
200200
}
201-
if event_mask.contains(EventMask::KEYBOARD) {
201+
if event_mask == EventMask::KEYBOARD {
202202
return Ok(1);
203203
}
204-
if event_mask.contains(EventMask::MOUSE) {
204+
if event_mask == EventMask::MOUSE {
205205
return Ok(2);
206206
}
207-
if event_mask.contains(EventMask::RUNTIME) {
207+
if event_mask == EventMask::RUNTIME {
208208
return Ok(3);
209209
}
210-
if event_mask.contains(EventMask::COMPONENT) {
210+
if event_mask == EventMask::COMPONENT {
211211
return Ok(4);
212212
}
213213

@@ -832,6 +832,13 @@ mod tests {
832832
assert!(error.contains("Unsupported event mask"));
833833
}
834834

835+
#[test]
836+
fn event_listener_bucket_rejects_multi_bit_masks() {
837+
let error = event_listener_bucket(EventMask::WINDOW | EventMask::KEYBOARD)
838+
.unwrap_err();
839+
assert!(error.contains("Unsupported event mask"));
840+
}
841+
835842
#[test]
836843
fn build_event_listener_index_registers_only_matching_components() {
837844
let components: Vec<Box<dyn Component<ComponentResult, String>>> = vec![

0 commit comments

Comments
 (0)