mirror of
https://github.com/bevyengine/bevy
synced 2024-12-24 03:53:06 +00:00
1e3ecbefdb
# Objective - Currently when you attempt to change the cursor_grab_mode it caches the new value whether the cursor grab succeeded or failed. This change handles the Result being returned by set_cursor_grab and changes the cursor_grab_mode back to the cached version in case of an Error. - Creates a way to handle #16237 and #16238 ## Solution - I changed the signature of winit_windows attempt_grab to return the Result<(), ExternalError> that winit set_cursor_grab returns. The system that calls attempt_grab now checks if there's an error returned, and if there is it sets the grab_mode back to the cached version (similar to what hit_test does a few lines down). ## Testing - I tested using this system that previously would not correctly lock the mouse on Ubuntu/x11 ``` pub fn lock_mouse(mut primary_window: Query<&mut Window, With<PrimaryWindow>>) { let window = &mut primary_window.single_mut(); if window.focused { window.cursor_options.grab_mode = CursorGrabMode::Confined; } else { window.cursor_options.grab_mode = CursorGrabMode::None; } } ``` - I only tested on Ubuntu with x11 |
||
---|---|---|
.. | ||
src | ||
Cargo.toml | ||
README.md |