Increase accuracy of various Web APIs (#2946)

This commit is contained in:
daxpedda 2023-07-10 23:55:43 +02:00 committed by GitHub
parent db8de03142
commit c4d70d75c1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 73 additions and 38 deletions

View file

@ -705,9 +705,10 @@ impl<T> EventLoopWindowTarget<T> {
},
{
let runner = self.runner.clone();
let canvas = canvas_clone.clone();
move |new_size| {
let canvas = RefCell::borrow(&canvas_clone);
let canvas = canvas.borrow();
canvas.set_current_size(new_size);
if canvas.old_size() != new_size {
canvas.set_old_size(new_size);
@ -723,12 +724,17 @@ impl<T> EventLoopWindowTarget<T> {
let runner = self.runner.clone();
canvas.on_intersection(move |is_intersecting| {
if backend::is_visible(runner.window()) {
// only fire if visible while skipping the first event if it's intersecting
if backend::is_visible(runner.window())
&& !(is_intersecting && canvas_clone.borrow().is_intersecting.is_none())
{
runner.send_event(Event::WindowEvent {
window_id: RootWindowId(id),
event: WindowEvent::Occluded(!is_intersecting),
});
}
canvas_clone.borrow_mut().is_intersecting = Some(is_intersecting);
})
}