Skip to content

Commit 398b15d

Browse files
mockersfcart
authored andcommitted
do not set cursor grab on window creation if not asked for (#3617)
# Objective - On Safari mobile, calling `winit_window.set_cursor_grab(true)` fails as the API is not implemented (as there is no cursor on Safari mobile, the api doesn't make sense there). I don't know about other mobile browsers ``` [Error] Unhandled Promise Rejection: TypeError: getObject(arg0).exitPointerLock is not a function. (In 'getObject(arg0).exitPointerLock()', 'getObject(arg0).exitPointerLock' is undefined) (anonymous function) (rect.js:1089) wasm-stub <?>.wasm-function[web_sys::features::gen_Document::Document::exit_pointer_lock::h20ffc49be163fc45] <?>.wasm-function[winit::platform_impl::platform::backend::canvas::Canvas::set_cursor_grab::h6a9472cf55263e98] <?>.wasm-function[bevy_winit::winit_windows::WinitWindows::create_window::h9db5b3cbb24347c5] <?>.wasm-function[<bevy_winit::WinitPlugin as bevy_app::plugin::Plugin>::build::ha4a7c046b80c4280] <?>.wasm-function[bevy_app::plugin_group::PluginGroupBuilder::finish::h0e5bc78f71c37b2f] <?>.wasm-function[rect::main::h899852fd17f2d489] <?>.wasm-function[std::sys_common::backtrace::__rust_begin_short_backtrace::hfe38f282e8dda96b] <?>.wasm-function[std::rt::lang_start::{{closure}}::hc2f3b555ffc58618] <?>.wasm-function[std::rt::lang_start_internal::ha901ae30d88554f2] <?>.wasm-function[main] <?>.wasm-function[] wasm-stub 21261 (anonymous function) (rect.js:1664) asyncFunctionResume (anonymous function) promiseReactionJobWithoutPromise promiseReactionJob ``` ## Solution - Do not call the api to release cursor grab on window creation, as the cursor is not grabbed anyway at this point
1 parent b9337de commit 398b15d

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

crates/bevy_winit/src/winit_windows.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,12 @@ impl WinitWindows {
127127

128128
let winit_window = winit_window_builder.build(event_loop).unwrap();
129129

130-
match winit_window.set_cursor_grab(window_descriptor.cursor_locked) {
131-
Ok(_) => {}
132-
Err(winit::error::ExternalError::NotSupported(_)) => {}
133-
Err(err) => Err(err).unwrap(),
130+
if window_descriptor.cursor_locked {
131+
match winit_window.set_cursor_grab(true) {
132+
Ok(_) => {}
133+
Err(winit::error::ExternalError::NotSupported(_)) => {}
134+
Err(err) => Err(err).unwrap(),
135+
}
134136
}
135137

136138
winit_window.set_cursor_visible(window_descriptor.cursor_visible);

0 commit comments

Comments
 (0)