macOS: Make set_simple_fullscreen honor set_borderless_game (#4164)
* Prevent panic when calling set_simple_fullscreen(false) on macos Calling `set_simple_fullscreen(false)` to restore the window after a previous call to `set_simple_fullscreen(true)` panics with `view must be installed in a window` in the call to `set_style_mask` with the old style. Moving the `set_style_mask` call after the frame has been resized fixes the issue. * Hide the doc and menubar on macos when using set_borderless_game with set_simple_fullscreen
This commit is contained in:
parent
2b4e8ef916
commit
ef37b1d5dd
3 changed files with 12 additions and 4 deletions
|
|
@ -1874,8 +1874,13 @@ impl WindowExtMacOS for WindowDelegate {
|
|||
self.ivars().is_simple_fullscreen.set(true);
|
||||
|
||||
// Simulate pre-Lion fullscreen by hiding the dock and menu bar
|
||||
let presentation_options = NSApplicationPresentationOptions::AutoHideDock
|
||||
| NSApplicationPresentationOptions::AutoHideMenuBar;
|
||||
let presentation_options = if self.is_borderless_game() {
|
||||
NSApplicationPresentationOptions::HideDock
|
||||
| NSApplicationPresentationOptions::HideMenuBar
|
||||
} else {
|
||||
NSApplicationPresentationOptions::AutoHideDock
|
||||
| NSApplicationPresentationOptions::AutoHideMenuBar
|
||||
};
|
||||
app.setPresentationOptions(presentation_options);
|
||||
|
||||
// Hide the titlebar
|
||||
|
|
@ -1896,7 +1901,6 @@ impl WindowExtMacOS for WindowDelegate {
|
|||
self.window().setMovable(false);
|
||||
} else {
|
||||
let new_mask = self.saved_style();
|
||||
self.set_style_mask(new_mask);
|
||||
self.ivars().is_simple_fullscreen.set(false);
|
||||
|
||||
let save_presentation_opts = self.ivars().save_presentation_opts.get();
|
||||
|
|
@ -1919,6 +1923,7 @@ impl WindowExtMacOS for WindowDelegate {
|
|||
|
||||
self.window().setFrame_display(frame, true);
|
||||
self.window().setMovable(true);
|
||||
self.set_style_mask(new_mask);
|
||||
}
|
||||
|
||||
true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue