Simulate mouse up if mouse was released outside window, don't report dragged payload if it was dragged from a different window

This commit is contained in:
K Simmons 2022-08-31 14:06:38 -07:00
parent fa78b597f4
commit 227cc66594
4 changed files with 77 additions and 24 deletions

View file

@ -310,7 +310,23 @@ impl Presenter {
prev_mouse_position: self.mouse_position,
platform_event: e.clone(),
}));
} else if let Some(clicked_button) = self.clicked_button {
// Mouse up event happened outside the current window. Simulate mouse up button event
let button_event = e.to_button_event(clicked_button);
events_to_send.push(MouseRegionEvent::Up(UpRegionEvent {
region: Default::default(),
platform_event: button_event.clone(),
}));
events_to_send.push(MouseRegionEvent::UpOut(UpOutRegionEvent {
region: Default::default(),
platform_event: button_event.clone(),
}));
events_to_send.push(MouseRegionEvent::Click(ClickRegionEvent {
region: Default::default(),
platform_event: button_event.clone(),
}));
}
events_to_send.push(MouseRegionEvent::Move(MoveRegionEvent {
region: Default::default(),
platform_event: e.clone(),