On Web, add Window::(set_)prevent_default() (#3307)
This commit is contained in:
parent
28a811bbba
commit
843d7904d6
6 changed files with 84 additions and 60 deletions
|
|
@ -75,18 +75,13 @@ impl<T> EventLoopWindowTarget<T> {
|
|||
WindowId(self.runner.generate_id())
|
||||
}
|
||||
|
||||
pub fn register(
|
||||
&self,
|
||||
canvas: &Rc<RefCell<backend::Canvas>>,
|
||||
id: WindowId,
|
||||
prevent_default: bool,
|
||||
) {
|
||||
pub fn register(&self, canvas: &Rc<RefCell<backend::Canvas>>, id: WindowId) {
|
||||
let canvas_clone = canvas.clone();
|
||||
let mut canvas = canvas.borrow_mut();
|
||||
#[cfg(any(feature = "rwh_04", feature = "rwh_05"))]
|
||||
canvas.set_attribute("data-raw-handle", &id.0.to_string());
|
||||
|
||||
canvas.on_touch_start(prevent_default);
|
||||
canvas.on_touch_start();
|
||||
|
||||
let runner = self.runner.clone();
|
||||
let has_focus = canvas.has_focus.clone();
|
||||
|
|
@ -157,7 +152,6 @@ impl<T> EventLoopWindowTarget<T> {
|
|||
.chain(modifiers_changed),
|
||||
);
|
||||
},
|
||||
prevent_default,
|
||||
);
|
||||
|
||||
let runner = self.runner.clone();
|
||||
|
|
@ -194,7 +188,6 @@ impl<T> EventLoopWindowTarget<T> {
|
|||
.chain(modifiers_changed),
|
||||
)
|
||||
},
|
||||
prevent_default,
|
||||
);
|
||||
|
||||
let has_focus = canvas.has_focus.clone();
|
||||
|
|
@ -374,7 +367,6 @@ impl<T> EventLoopWindowTarget<T> {
|
|||
]));
|
||||
}
|
||||
},
|
||||
prevent_default,
|
||||
);
|
||||
|
||||
canvas.on_mouse_press(
|
||||
|
|
@ -456,7 +448,6 @@ impl<T> EventLoopWindowTarget<T> {
|
|||
)))
|
||||
}
|
||||
},
|
||||
prevent_default,
|
||||
);
|
||||
|
||||
canvas.on_mouse_release(
|
||||
|
|
@ -547,30 +538,27 @@ impl<T> EventLoopWindowTarget<T> {
|
|||
|
||||
let runner = self.runner.clone();
|
||||
let modifiers = self.modifiers.clone();
|
||||
canvas.on_mouse_wheel(
|
||||
move |pointer_id, delta, active_modifiers| {
|
||||
let modifiers_changed = (has_focus.get() && modifiers.get() != active_modifiers)
|
||||
.then(|| {
|
||||
modifiers.set(active_modifiers);
|
||||
Event::WindowEvent {
|
||||
window_id: RootWindowId(id),
|
||||
event: WindowEvent::ModifiersChanged(active_modifiers.into()),
|
||||
}
|
||||
});
|
||||
|
||||
runner.send_events(modifiers_changed.into_iter().chain(iter::once(
|
||||
canvas.on_mouse_wheel(move |pointer_id, delta, active_modifiers| {
|
||||
let modifiers_changed =
|
||||
(has_focus.get() && modifiers.get() != active_modifiers).then(|| {
|
||||
modifiers.set(active_modifiers);
|
||||
Event::WindowEvent {
|
||||
window_id: RootWindowId(id),
|
||||
event: WindowEvent::MouseWheel {
|
||||
device_id: RootDeviceId(DeviceId(pointer_id)),
|
||||
delta,
|
||||
phase: TouchPhase::Moved,
|
||||
},
|
||||
event: WindowEvent::ModifiersChanged(active_modifiers.into()),
|
||||
}
|
||||
});
|
||||
|
||||
runner.send_events(modifiers_changed.into_iter().chain(iter::once(
|
||||
Event::WindowEvent {
|
||||
window_id: RootWindowId(id),
|
||||
event: WindowEvent::MouseWheel {
|
||||
device_id: RootDeviceId(DeviceId(pointer_id)),
|
||||
delta,
|
||||
phase: TouchPhase::Moved,
|
||||
},
|
||||
)));
|
||||
},
|
||||
prevent_default,
|
||||
);
|
||||
},
|
||||
)));
|
||||
});
|
||||
|
||||
let runner = self.runner.clone();
|
||||
canvas.on_touch_cancel(move |device_id, location, force| {
|
||||
|
|
@ -649,7 +637,7 @@ impl<T> EventLoopWindowTarget<T> {
|
|||
let runner = self.runner.clone();
|
||||
canvas.on_animation_frame(move || runner.request_redraw(RootWindowId(id)));
|
||||
|
||||
canvas.on_context_menu(prevent_default);
|
||||
canvas.on_context_menu();
|
||||
}
|
||||
|
||||
pub fn available_monitors(&self) -> VecDequeIter<MonitorHandle> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue