Merge pull request #6848 from miniak/titlebar-style-hidden

Add support for titleBarStyle: 'hidden' on OS X 10.9
This commit is contained in:
Cheng Zhao 2016-08-18 14:40:54 +09:00 committed by GitHub
commit 105597c7e8
3 changed files with 23 additions and 6 deletions

View file

@ -127,6 +127,8 @@ class NativeWindowMac : public NativeWindow,
void UpdateDraggableRegions(
const std::vector<DraggableRegion>& regions) override;
void ShowWindowButton(NSWindowButton button);
void InstallView();
void UninstallView();

View file

@ -423,7 +423,11 @@ struct Converter<atom::NativeWindowMac::TitleBarStyle> {
*out = atom::NativeWindowMac::HIDDEN;
} else if (title_bar_style == "hidden-inset" || // Deprecate this after 2.0
title_bar_style == "hiddenInset") {
*out = atom::NativeWindowMac::HIDDEN_INSET;
if (base::mac::IsOSYosemiteOrLater()) {
*out = atom::NativeWindowMac::HIDDEN_INSET;
} else {
*out = atom::NativeWindowMac::HIDDEN;
}
} else {
return false;
}
@ -467,9 +471,7 @@ NativeWindowMac::NativeWindowMac(
bool closable = true;
options.Get(options::kClosable, &closable);
// New title bar styles are available in Yosemite or newer
if (base::mac::IsOSYosemiteOrLater())
options.Get(options::kTitleBarStyle, &title_bar_style_);
options.Get(options::kTitleBarStyle, &title_bar_style_);
std::string windowType;
options.Get(options::kType, &windowType);
@ -1103,6 +1105,11 @@ void NativeWindowMac::UpdateDraggableRegions(
UpdateDraggableRegionViews(regions);
}
void NativeWindowMac::ShowWindowButton(NSWindowButton button) {
auto view = [window_ standardWindowButton:button];
[view.superview addSubview:view positioned:NSWindowAbove relativeTo:nil];
}
void NativeWindowMac::InstallView() {
// Make sure the bottom corner is rounded: http://crbug.com/396264.
// But do not enable it on OS X 10.9 for transparent window, otherwise a
@ -1131,8 +1138,15 @@ void NativeWindowMac::InstallView() {
// The fullscreen button should always be hidden for frameless window.
[[window_ standardWindowButton:NSWindowFullScreenButton] setHidden:YES];
if (title_bar_style_ != NORMAL)
if (title_bar_style_ != NORMAL) {
if (base::mac::IsOSMavericks()) {
ShowWindowButton(NSWindowZoomButton);
ShowWindowButton(NSWindowMiniaturizeButton);
ShowWindowButton(NSWindowCloseButton);
}
return;
}
// Hide the window buttons.
[[window_ standardWindowButton:NSWindowZoomButton] setHidden:YES];

View file

@ -208,7 +208,7 @@ Possible values are:
input sparingly.
* On Windows, possible type is `toolbar`.
The `titleBarStyle` option is only supported on macOS 10.10 Yosemite and newer.
The `titleBarStyle` option.
Possible values are:
* `default` or not specified, results in the standard gray opaque Mac title
@ -218,6 +218,7 @@ Possible values are:
the top left.
* `hidden-inset` results in a hidden title bar with an alternative look
where the traffic light buttons are slightly more inset from the window edge.
It is not supported on macOS 10.9 Mavericks, where it falls back to `hidden`.
The `webPreferences` option is an object that can have the following properties: