chore(wayland): don't reapply same cursor grab

Some compositors break when re-taking the same grab.

Closes: https://github.com/rust-windowing/winit/issues/3566
This commit is contained in:
Kirill Chibisov 2024-03-05 14:27:40 +04:00
parent f6f1c45a72
commit fc8a008b25
2 changed files with 8 additions and 2 deletions

View file

@ -826,9 +826,14 @@ impl WindowState {
/// Set the cursor grabbing state on the top-level.
pub fn set_cursor_grab(&mut self, mode: CursorGrabMode) -> Result<(), ExternalError> {
// Replace the user grabbing mode.
if self.cursor_grab_mode.user_grab_mode == mode {
return Ok(());
}
self.set_cursor_grab_inner(mode)?;
// Update user grab on success.
self.cursor_grab_mode.user_grab_mode = mode;
self.set_cursor_grab_inner(mode)
Ok(())
}
/// Reload the hints for minimum and maximum sizes.