fix: crash when exiting simple fullscreen on macOS (#20220)

This commit is contained in:
trop[bot]
2019-09-17 08:59:32 -07:00
committed by Shelley Vohr
parent d251642c83
commit 068e12d909
3 changed files with 19 additions and 3 deletions

View File

@@ -158,7 +158,7 @@ class NativeWindowMac : public NativeWindow {
AtomTouchBar* touch_bar() const { return touch_bar_.get(); }
bool zoom_to_page_width() const { return zoom_to_page_width_; }
bool fullscreen_window_title() const { return fullscreen_window_title_; }
bool simple_fullscreen() const { return always_simple_fullscreen_; }
bool always_simple_fullscreen() const { return always_simple_fullscreen_; }
protected:
// views::WidgetDelegate:

View File

@@ -178,8 +178,14 @@ bool ScopedDisableResize::disable_resize_ = false;
}
- (void)toggleFullScreenMode:(id)sender {
if (shell_->simple_fullscreen())
shell_->SetSimpleFullScreen(!shell_->IsSimpleFullScreen());
bool is_simple_fs = shell_->IsSimpleFullScreen();
bool always_simple_fs = shell_->always_simple_fullscreen();
// If we're in simple fullscreen mode and trying to exit it
// we need to ensure we exit it properly to prevent a crash
// with NSWindowStyleMaskTitled mode
if (is_simple_fs || always_simple_fs)
shell_->SetSimpleFullScreen(!is_simple_fs);
else
[super toggleFullScreen:sender];
}

View File

@@ -3343,6 +3343,16 @@ describe('BrowserWindow module', () => {
w.setFullScreen(true)
})
it('does not crash when exiting simpleFullScreen', (done) => {
const w = new BrowserWindow()
w.setSimpleFullScreen(true)
setTimeout(() => {
w.setFullScreen(!w.isFullScreen())
done()
}, 1000)
})
it('should not be changed by setKiosk method', (done) => {
const w = new BrowserWindow()
w.once('enter-full-screen', async () => {