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

This commit is contained in:
Shelley Vohr 2019-09-12 13:38:16 -04:00 коммит произвёл GitHub
Родитель 5dee8a5717
Коммит 3ec17a88ba
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 19 добавлений и 3 удалений

Просмотреть файл

@ -161,7 +161,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:

Просмотреть файл

@ -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];
}

Просмотреть файл

@ -3389,6 +3389,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 () => {