fix cursor grab issue (#7010)
# Objective - Set the cursor grab mode after the window is built, fix #7007, clean some conversion code. ## Solution - Set the cursor grab mode after the window is built.
This commit is contained in:
parent
717def2ccf
commit
9ff111e24c
@ -5,7 +5,7 @@ use bevy_input::{
|
||||
ButtonState,
|
||||
};
|
||||
use bevy_math::Vec2;
|
||||
use bevy_window::{CursorGrabMode, CursorIcon};
|
||||
use bevy_window::CursorIcon;
|
||||
|
||||
pub fn convert_keyboard_input(keyboard_input: &winit::event::KeyboardInput) -> KeyboardInput {
|
||||
KeyboardInput {
|
||||
@ -266,12 +266,3 @@ pub fn convert_cursor_icon(cursor_icon: CursorIcon) -> winit::window::CursorIcon
|
||||
CursorIcon::RowResize => winit::window::CursorIcon::RowResize,
|
||||
}
|
||||
}
|
||||
|
||||
/// Map [`bevy_window::CursorGrabMode`] to [`winit::window::CursorGrabMode`].
|
||||
pub fn convert_cursor_grab_mode(mode: CursorGrabMode) -> winit::window::CursorGrabMode {
|
||||
match mode {
|
||||
CursorGrabMode::None => winit::window::CursorGrabMode::None,
|
||||
CursorGrabMode::Confined => winit::window::CursorGrabMode::Confined,
|
||||
CursorGrabMode::Locked => winit::window::CursorGrabMode::Locked,
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
use crate::converters::convert_cursor_grab_mode;
|
||||
use bevy_math::{DVec2, IVec2};
|
||||
use bevy_utils::HashMap;
|
||||
use bevy_window::{
|
||||
@ -165,16 +164,6 @@ impl WinitWindows {
|
||||
}
|
||||
}
|
||||
|
||||
// Do not set the grab mode on window creation if it's none, this can fail on mobile
|
||||
if window_descriptor.cursor_grab_mode != CursorGrabMode::None {
|
||||
match winit_window
|
||||
.set_cursor_grab(convert_cursor_grab_mode(window_descriptor.cursor_grab_mode))
|
||||
{
|
||||
Ok(_) | Err(winit::error::ExternalError::NotSupported(_)) => {}
|
||||
Err(err) => Err(err).unwrap(),
|
||||
}
|
||||
}
|
||||
|
||||
winit_window.set_cursor_visible(window_descriptor.cursor_visible);
|
||||
|
||||
self.window_id_to_winit.insert(window_id, winit_window.id());
|
||||
@ -207,7 +196,7 @@ impl WinitWindows {
|
||||
display_handle: winit_window.raw_display_handle(),
|
||||
};
|
||||
self.windows.insert(winit_window.id(), winit_window);
|
||||
Window::new(
|
||||
let mut window = Window::new(
|
||||
window_id,
|
||||
window_descriptor,
|
||||
inner_size.width,
|
||||
@ -215,7 +204,12 @@ impl WinitWindows {
|
||||
scale_factor,
|
||||
position,
|
||||
Some(raw_handle),
|
||||
)
|
||||
);
|
||||
// Do not set the grab mode on window creation if it's none, this can fail on mobile
|
||||
if window_descriptor.cursor_grab_mode != CursorGrabMode::None {
|
||||
window.set_cursor_grab_mode(window_descriptor.cursor_grab_mode);
|
||||
}
|
||||
window
|
||||
}
|
||||
|
||||
pub fn get_window(&self, id: WindowId) -> Option<&winit::window::Window> {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user