mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2025-01-11 13:31:29 +11:00
Prevent the default browser behavior of events (#1576)
This stops things like page scrolling on spacebar / arrow keys
This commit is contained in:
parent
49bcec1d27
commit
6cfddfea21
|
@ -1,4 +1,5 @@
|
||||||
# Unreleased
|
# Unreleased
|
||||||
|
- On Web, prevent the webpage from scrolling when the user is focused on a winit canvas
|
||||||
|
|
||||||
# 0.22.2 (2020-05-16)
|
# 0.22.2 (2020-05-16)
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,9 @@ use stdweb::js;
|
||||||
use stdweb::traits::IPointerEvent;
|
use stdweb::traits::IPointerEvent;
|
||||||
use stdweb::unstable::TryInto;
|
use stdweb::unstable::TryInto;
|
||||||
use stdweb::web::event::{
|
use stdweb::web::event::{
|
||||||
BlurEvent, ConcreteEvent, FocusEvent, FullscreenChangeEvent, KeyDownEvent, KeyPressEvent,
|
BlurEvent, ConcreteEvent, FocusEvent, FullscreenChangeEvent, IEvent, KeyDownEvent,
|
||||||
KeyUpEvent, MouseWheelEvent, PointerDownEvent, PointerMoveEvent, PointerOutEvent,
|
KeyPressEvent, KeyUpEvent, MouseWheelEvent, PointerDownEvent, PointerMoveEvent,
|
||||||
PointerOverEvent, PointerUpEvent,
|
PointerOutEvent, PointerOverEvent, PointerUpEvent,
|
||||||
};
|
};
|
||||||
use stdweb::web::html_element::CanvasElement;
|
use stdweb::web::html_element::CanvasElement;
|
||||||
use stdweb::web::{
|
use stdweb::web::{
|
||||||
|
@ -130,6 +130,7 @@ impl Canvas {
|
||||||
F: 'static + FnMut(ScanCode, Option<VirtualKeyCode>, ModifiersState),
|
F: 'static + FnMut(ScanCode, Option<VirtualKeyCode>, ModifiersState),
|
||||||
{
|
{
|
||||||
self.on_keyboard_release = Some(self.add_user_event(move |event: KeyUpEvent| {
|
self.on_keyboard_release = Some(self.add_user_event(move |event: KeyUpEvent| {
|
||||||
|
event.prevent_default();
|
||||||
handler(
|
handler(
|
||||||
event::scan_code(&event),
|
event::scan_code(&event),
|
||||||
event::virtual_key_code(&event),
|
event::virtual_key_code(&event),
|
||||||
|
@ -143,6 +144,7 @@ impl Canvas {
|
||||||
F: 'static + FnMut(ScanCode, Option<VirtualKeyCode>, ModifiersState),
|
F: 'static + FnMut(ScanCode, Option<VirtualKeyCode>, ModifiersState),
|
||||||
{
|
{
|
||||||
self.on_keyboard_press = Some(self.add_user_event(move |event: KeyDownEvent| {
|
self.on_keyboard_press = Some(self.add_user_event(move |event: KeyDownEvent| {
|
||||||
|
event.prevent_default();
|
||||||
handler(
|
handler(
|
||||||
event::scan_code(&event),
|
event::scan_code(&event),
|
||||||
event::virtual_key_code(&event),
|
event::virtual_key_code(&event),
|
||||||
|
@ -228,6 +230,7 @@ impl Canvas {
|
||||||
F: 'static + FnMut(i32, MouseScrollDelta, ModifiersState),
|
F: 'static + FnMut(i32, MouseScrollDelta, ModifiersState),
|
||||||
{
|
{
|
||||||
self.on_mouse_wheel = Some(self.add_event(move |event: MouseWheelEvent| {
|
self.on_mouse_wheel = Some(self.add_event(move |event: MouseWheelEvent| {
|
||||||
|
event.prevent_default();
|
||||||
if let Some(delta) = event::mouse_scroll_delta(&event) {
|
if let Some(delta) = event::mouse_scroll_delta(&event) {
|
||||||
handler(0, delta, event::mouse_modifiers(&event));
|
handler(0, delta, event::mouse_modifiers(&event));
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,6 +135,7 @@ impl Canvas {
|
||||||
{
|
{
|
||||||
self.on_keyboard_release =
|
self.on_keyboard_release =
|
||||||
Some(self.add_user_event("keyup", move |event: KeyboardEvent| {
|
Some(self.add_user_event("keyup", move |event: KeyboardEvent| {
|
||||||
|
event.prevent_default();
|
||||||
handler(
|
handler(
|
||||||
event::scan_code(&event),
|
event::scan_code(&event),
|
||||||
event::virtual_key_code(&event),
|
event::virtual_key_code(&event),
|
||||||
|
@ -149,6 +150,7 @@ impl Canvas {
|
||||||
{
|
{
|
||||||
self.on_keyboard_press =
|
self.on_keyboard_press =
|
||||||
Some(self.add_user_event("keydown", move |event: KeyboardEvent| {
|
Some(self.add_user_event("keydown", move |event: KeyboardEvent| {
|
||||||
|
event.prevent_default();
|
||||||
handler(
|
handler(
|
||||||
event::scan_code(&event),
|
event::scan_code(&event),
|
||||||
event::virtual_key_code(&event),
|
event::virtual_key_code(&event),
|
||||||
|
@ -242,6 +244,7 @@ impl Canvas {
|
||||||
F: 'static + FnMut(i32, MouseScrollDelta, ModifiersState),
|
F: 'static + FnMut(i32, MouseScrollDelta, ModifiersState),
|
||||||
{
|
{
|
||||||
self.on_mouse_wheel = Some(self.add_event("wheel", move |event: WheelEvent| {
|
self.on_mouse_wheel = Some(self.add_event("wheel", move |event: WheelEvent| {
|
||||||
|
event.prevent_default();
|
||||||
if let Some(delta) = event::mouse_scroll_delta(&event) {
|
if let Some(delta) = event::mouse_scroll_delta(&event) {
|
||||||
handler(0, delta, event::mouse_modifiers(&event));
|
handler(0, delta, event::mouse_modifiers(&event));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue