fix: menu bar visibility when exiting full screen (#38599)
This commit is contained in:
parent
5ee890fb6f
commit
c8bdd014c8
3 changed files with 52 additions and 3 deletions
|
@ -731,10 +731,14 @@ void NativeWindowViews::SetFullScreen(bool fullscreen) {
|
||||||
gfx::Rect());
|
gfx::Rect());
|
||||||
|
|
||||||
// Auto-hide menubar when in fullscreen.
|
// Auto-hide menubar when in fullscreen.
|
||||||
if (fullscreen)
|
if (fullscreen) {
|
||||||
|
menu_bar_visible_before_fullscreen_ = IsMenuBarVisible();
|
||||||
SetMenuBarVisibility(false);
|
SetMenuBarVisibility(false);
|
||||||
else
|
} else {
|
||||||
SetMenuBarVisibility(!IsMenuBarAutoHide());
|
SetMenuBarVisibility(!IsMenuBarAutoHide() &&
|
||||||
|
menu_bar_visible_before_fullscreen_);
|
||||||
|
menu_bar_visible_before_fullscreen_ = false;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -321,6 +321,9 @@ class NativeWindowViews : public NativeWindow,
|
||||||
// Handles unhandled keyboard messages coming back from the renderer process.
|
// Handles unhandled keyboard messages coming back from the renderer process.
|
||||||
views::UnhandledKeyboardEventHandler keyboard_event_handler_;
|
views::UnhandledKeyboardEventHandler keyboard_event_handler_;
|
||||||
|
|
||||||
|
// Whether the menubar is visible before the window enters fullscreen
|
||||||
|
bool menu_bar_visible_before_fullscreen_ = false;
|
||||||
|
|
||||||
// Whether the window should be enabled based on user calls to SetEnabled()
|
// Whether the window should be enabled based on user calls to SetEnabled()
|
||||||
bool is_enabled_ = true;
|
bool is_enabled_ = true;
|
||||||
// How many modal children this window has;
|
// How many modal children this window has;
|
||||||
|
|
|
@ -5353,6 +5353,48 @@ describe('BrowserWindow module', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ifdescribe(process.platform !== 'darwin')('when fullscreen state is changed', () => {
|
||||||
|
it('correctly remembers state prior to fullscreen change', async () => {
|
||||||
|
const w = new BrowserWindow({ show: false });
|
||||||
|
expect(w.isMenuBarVisible()).to.be.true('isMenuBarVisible');
|
||||||
|
w.setMenuBarVisibility(false);
|
||||||
|
expect(w.isMenuBarVisible()).to.be.false('isMenuBarVisible');
|
||||||
|
|
||||||
|
const enterFS = once(w, 'enter-full-screen');
|
||||||
|
w.setFullScreen(true);
|
||||||
|
await enterFS;
|
||||||
|
expect(w.fullScreen).to.be.true('not fullscreen');
|
||||||
|
|
||||||
|
const exitFS = once(w, 'leave-full-screen');
|
||||||
|
w.setFullScreen(false);
|
||||||
|
await exitFS;
|
||||||
|
expect(w.fullScreen).to.be.false('not fullscreen');
|
||||||
|
|
||||||
|
expect(w.isMenuBarVisible()).to.be.false('isMenuBarVisible');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('correctly remembers state prior to fullscreen change with autoHide', async () => {
|
||||||
|
const w = new BrowserWindow({ show: false });
|
||||||
|
expect(w.autoHideMenuBar).to.be.false('autoHideMenuBar');
|
||||||
|
w.autoHideMenuBar = true;
|
||||||
|
expect(w.autoHideMenuBar).to.be.true('autoHideMenuBar');
|
||||||
|
w.setMenuBarVisibility(false);
|
||||||
|
expect(w.isMenuBarVisible()).to.be.false('isMenuBarVisible');
|
||||||
|
|
||||||
|
const enterFS = once(w, 'enter-full-screen');
|
||||||
|
w.setFullScreen(true);
|
||||||
|
await enterFS;
|
||||||
|
expect(w.fullScreen).to.be.true('not fullscreen');
|
||||||
|
|
||||||
|
const exitFS = once(w, 'leave-full-screen');
|
||||||
|
w.setFullScreen(false);
|
||||||
|
await exitFS;
|
||||||
|
expect(w.fullScreen).to.be.false('not fullscreen');
|
||||||
|
|
||||||
|
expect(w.isMenuBarVisible()).to.be.false('isMenuBarVisible');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
ifdescribe(process.platform === 'darwin')('fullscreenable state', () => {
|
ifdescribe(process.platform === 'darwin')('fullscreenable state', () => {
|
||||||
it('with functions', () => {
|
it('with functions', () => {
|
||||||
it('can be set with fullscreenable constructor option', () => {
|
it('can be set with fullscreenable constructor option', () => {
|
||||||
|
|
Loading…
Reference in a new issue