More vibrancy fixes (#12157)

* Only set title bar to transparent when vibrant with a custom titlebar
* Correctly set the transparent state of the GpuSwitcher so vibrancy works on reload
* Document case where using frame: false without custom titleBarStyle and vibrant
This commit is contained in:
Samuel Attard 2018-03-08 03:40:36 +11:00 committed by Shelley Vohr
parent 2f4fd3324b
commit 8c138e74be
2 changed files with 10 additions and 3 deletions

View file

@ -23,6 +23,7 @@
#include "native_mate/dictionary.h" #include "native_mate/dictionary.h"
#include "skia/ext/skia_utils_mac.h" #include "skia/ext/skia_utils_mac.h"
#include "ui/gfx/skia_util.h" #include "ui/gfx/skia_util.h"
#include "ui/gl/gpu_switching_manager.h"
namespace { namespace {
@ -1634,15 +1635,19 @@ void NativeWindowMac::SetVibrancy(const std::string& type) {
[vibrant_view removeFromSuperview]; [vibrant_view removeFromSuperview];
[window_ setVibrantView:nil]; [window_ setVibrantView:nil];
ui::GpuSwitchingManager::SetTransparent(transparent());
return; return;
} }
background_color_before_vibrancy_.reset([window_ backgroundColor]); background_color_before_vibrancy_.reset([window_ backgroundColor]);
transparency_before_vibrancy_ = [window_ titlebarAppearsTransparent]; transparency_before_vibrancy_ = [window_ titlebarAppearsTransparent];
ui::GpuSwitchingManager::SetTransparent(true);
[window_ setTitlebarAppearsTransparent:YES]; if (title_bar_style_ != NORMAL) {
[window_ setBackgroundColor:[NSColor clearColor]]; [window_ setTitlebarAppearsTransparent:YES];
[window_ setBackgroundColor:[NSColor clearColor]];
}
NSVisualEffectView* effect_view = (NSVisualEffectView*)vibrant_view; NSVisualEffectView* effect_view = (NSVisualEffectView*)vibrant_view;
if (effect_view == nil) { if (effect_view == nil) {

View file

@ -235,7 +235,9 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
window shadow and window animations. Default is `true`. window shadow and window animations. Default is `true`.
* `vibrancy` String (optional) - Add a type of vibrancy effect to the window, only on * `vibrancy` String (optional) - Add a type of vibrancy effect to the window, only on
macOS. Can be `appearance-based`, `light`, `dark`, `titlebar`, `selection`, macOS. Can be `appearance-based`, `light`, `dark`, `titlebar`, `selection`,
`menu`, `popover`, `sidebar`, `medium-light` or `ultra-dark`. `menu`, `popover`, `sidebar`, `medium-light` or `ultra-dark`. Please note that
using `frame: false` in combination with a vibrancy value requires that you use a
non-default `titleBarStyle` as well.
* `zoomToPageWidth` Boolean (optional) - Controls the behavior on macOS when * `zoomToPageWidth` Boolean (optional) - Controls the behavior on macOS when
option-clicking the green stoplight button on the toolbar or by clicking the option-clicking the green stoplight button on the toolbar or by clicking the
Window > Zoom menu item. If `true`, the window will grow to the preferred Window > Zoom menu item. If `true`, the window will grow to the preferred