diff --git a/atom/browser/native_window_mac.h b/atom/browser/native_window_mac.h index 38845140e..3b81786e7 100644 --- a/atom/browser/native_window_mac.h +++ b/atom/browser/native_window_mac.h @@ -78,6 +78,10 @@ class NativeWindowMac : public NativeWindow { UpdateDraggableRegionViews(draggable_regions_); } + bool ShouldHideNativeToolbarInFullscreen() const { + return should_hide_native_toolbar_in_fullscreen_; + } + protected: // NativeWindow: void HandleKeyboardEvent( @@ -118,6 +122,8 @@ class NativeWindowMac : public NativeWindow { // The presentation options before entering kiosk mode. NSApplicationPresentationOptions kiosk_options_; + bool should_hide_native_toolbar_in_fullscreen_; + DISALLOW_COPY_AND_ASSIGN(NativeWindowMac); }; diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index 1ee69fc1f..d8d1f6619 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -177,10 +177,25 @@ bool ScopedDisableResize::disable_resize_ = false; } - (void)windowDidEnterFullScreen:(NSNotification*)notification { + if (shell_->ShouldHideNativeToolbarInFullscreen()) { + NSWindow* window = shell_->GetNativeWindow(); + [window setToolbar:nil]; + } + shell_->NotifyWindowEnterFullScreen(); } - (void)windowDidExitFullScreen:(NSNotification*)notification { + + // Restore the native toolbar for styling if needed + if (shell_->ShouldHideNativeToolbarInFullscreen()) { + NSWindow* window = shell_->GetNativeWindow(); + base::scoped_nsobject toolbar( + [[NSToolbar alloc] initWithIdentifier:@"titlebarStylingToolbar"]); + [toolbar setShowsBaselineSeparator:NO]; + [window setToolbar:toolbar]; + } + if (!shell_->has_frame()) { NSWindow* window = shell_->GetNativeWindow(); [[window standardWindowButton:NSWindowFullScreenButton] setHidden:YES]; @@ -378,6 +393,15 @@ NativeWindowMac::NativeWindowMac( styleMask |= NSUnifiedTitleAndToolbarWindowMask; } + // We capture this because we need to access the option later when entering/exiting fullscreen + // and since the options dict is only passed to the constructor but not stored, + // let’s store this option this way. + if (titleBarStyle == "hidden-inset") { + should_hide_native_toolbar_in_fullscreen_ = true; + } else { + should_hide_native_toolbar_in_fullscreen_ = false; + } + window_.reset([[AtomNSWindow alloc] initWithContentRect:cocoa_bounds styleMask:styleMask