Skip to content

Commit

Permalink
fix: window button visibility fullscreen interaction (#34673)
Browse files Browse the repository at this point in the history
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
  • Loading branch information
trop[bot] and codebytere committed Jun 22, 2022
1 parent 16ae9e1 commit 8c3c382
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 4 deletions.
11 changes: 7 additions & 4 deletions shell/browser/native_window_mac.mm
Expand Up @@ -1532,12 +1532,15 @@ void ViewDidMoveToSuperview(NSView* self, SEL _cmd) {

void NativeWindowMac::SetWindowButtonVisibility(bool visible) {
window_button_visibility_ = visible;
// The visibility of window buttons are managed by |buttons_proxy_| if the
// style is customButtonsOnHover.
if (title_bar_style_ == TitleBarStyle::kCustomButtonsOnHover)
if (buttons_proxy_) {
if (visible)
[buttons_proxy_ redraw];
[buttons_proxy_ setVisible:visible];
else
}

if (title_bar_style_ != TitleBarStyle::kCustomButtonsOnHover)
InternalSetWindowButtonVisibility(visible);

NotifyLayoutWindowControlsOverlay();
}

Expand Down
36 changes: 36 additions & 0 deletions spec-main/api-browser-window-spec.ts
Expand Up @@ -1998,6 +1998,42 @@ describe('BrowserWindow module', () => {
w.setWindowButtonVisibility(false);
expect(w._getWindowButtonVisibility()).to.equal(false);
});

it('correctly updates when entering/exiting fullscreen for hidden style', async () => {
const w = new BrowserWindow({ show: false, frame: false, titleBarStyle: 'hidden' });
expect(w._getWindowButtonVisibility()).to.equal(true);
w.setWindowButtonVisibility(false);
expect(w._getWindowButtonVisibility()).to.equal(false);

const enterFS = emittedOnce(w, 'enter-full-screen');
w.setFullScreen(true);
await enterFS;

const leaveFS = emittedOnce(w, 'leave-full-screen');
w.setFullScreen(false);
await leaveFS;

w.setWindowButtonVisibility(true);
expect(w._getWindowButtonVisibility()).to.equal(true);
});

it('correctly updates when entering/exiting fullscreen for hiddenInset style', async () => {
const w = new BrowserWindow({ show: false, frame: false, titleBarStyle: 'hiddenInset' });
expect(w._getWindowButtonVisibility()).to.equal(true);
w.setWindowButtonVisibility(false);
expect(w._getWindowButtonVisibility()).to.equal(false);

const enterFS = emittedOnce(w, 'enter-full-screen');
w.setFullScreen(true);
await enterFS;

const leaveFS = emittedOnce(w, 'leave-full-screen');
w.setFullScreen(false);
await leaveFS;

w.setWindowButtonVisibility(true);
expect(w._getWindowButtonVisibility()).to.equal(true);
});
});

ifdescribe(process.platform === 'darwin')('BrowserWindow.setVibrancy(type)', () => {
Expand Down

0 comments on commit 8c3c382

Please sign in to comment.