fix: update traffic lights position for macOS 11 (#30263)

This commit is contained in:
Cheng Zhao 2021-07-27 01:22:21 +09:00 committed by GitHub
parent 385d0f590f
commit d2989de5d9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 2 deletions

View file

@ -1800,7 +1800,7 @@ void NativeWindowMac::AddContentViewLayers() {
[buttons_view_ setShowOnHover:YES];
if (title_bar_style_ == TitleBarStyle::kHiddenInset &&
!traffic_light_position_)
[buttons_view_ setMargin:gfx::Point(12, 11)];
[buttons_view_ setMargin:[WindowButtonsView hiddenInsetMargin]];
if (!IsClosable())
[[buttons_view_ viewWithTag:0] setEnabled:NO];

View file

@ -22,6 +22,8 @@
base::scoped_nsobject<NSTrackingArea> tracking_area_;
}
+ (gfx::Point)defaultMargin;
+ (gfx::Point)hiddenInsetMargin;
- (id)initWithMargin:(const absl::optional<gfx::Point>&)margin;
- (void)setMargin:(const absl::optional<gfx::Point>&)margin;
- (void)setShowOnHover:(BOOL)yes;

View file

@ -23,6 +23,21 @@ const NSWindowButton kButtonTypes[] = {
@implementation WindowButtonsView
+ (gfx::Point)defaultMargin {
if (@available(macOS 11.0, *)) {
return gfx::Point(7, 6);
} else {
return gfx::Point(7, 3);
}
}
+ (gfx::Point)hiddenInsetMargin {
// For macOS >= 11, while this value does not match offical macOS apps like
// Safari or Notes, it matches titleBarStyle's old implementation before
// Electron <= 12.
return gfx::Point(12, 11);
}
- (id)initWithMargin:(const absl::optional<gfx::Point>&)margin {
self = [super initWithFrame:NSZeroRect];
[self setMargin:margin];
@ -51,7 +66,7 @@ const NSWindowButton kButtonTypes[] = {
}
- (void)setMargin:(const absl::optional<gfx::Point>&)margin {
margin_ = margin.value_or(gfx::Point(7, 3));
margin_ = margin.value_or([WindowButtonsView defaultMargin]);
}
- (void)setShowOnHover:(BOOL)yes {