diff --git a/crates/bevy_winit/src/system.rs b/crates/bevy_winit/src/system.rs index 34a4dddc51eb1..6c22849fd27d8 100644 --- a/crates/bevy_winit/src/system.rs +++ b/crates/bevy_winit/src/system.rs @@ -13,6 +13,9 @@ use bevy_window::{ WindowClosing, WindowCreated, WindowFocused, WindowMode, WindowResized, WindowWrapper, }; +#[cfg(target_os = "macos")] +use bevy_window::MonitorSelection; + use winit::{ dpi::{LogicalPosition, LogicalSize, PhysicalPosition, PhysicalSize}, event_loop::ActiveEventLoop, @@ -327,6 +330,17 @@ pub(crate) fn changed_windows( winit_window.set_fullscreen(new_mode); } } + } else { + #[cfg(target_os = "macos")] + match (winit_window.fullscreen(), window.mode) { + (Some(winit::window::Fullscreen::Borderless(_)), WindowMode::Windowed) => { + window.mode = WindowMode::BorderlessFullscreen(MonitorSelection::Current); + } + (None, WindowMode::BorderlessFullscreen(_)) => { + window.mode = WindowMode::Windowed; + } + _ => {} + } } if window.resolution != cache.window.resolution {