fix: only bezel frameless windows (#23779)

This commit is contained in:
Shelley Vohr 2020-05-27 14:07:24 -07:00 committed by GitHub
parent 7b0a84477a
commit 5d88d0ee74
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1454,25 +1454,27 @@ void NativeWindowMac::SetVibrancy(const std::string& type) {
[effect_view setState:NSVisualEffectStateActive]; [effect_view setState:NSVisualEffectStateActive];
// Make frameless Vibrant windows have rounded corners. // Make frameless Vibrant windows have rounded corners.
CGFloat radius = 5.0f; // default corner radius if (!has_frame()) {
CGFloat dimension = 2 * radius + 1; CGFloat radius = 5.0f; // default corner radius
NSSize size = NSMakeSize(dimension, dimension); CGFloat dimension = 2 * radius + 1;
NSImage* maskImage = [NSImage imageWithSize:size NSSize size = NSMakeSize(dimension, dimension);
flipped:NO NSImage* maskImage = [NSImage imageWithSize:size
drawingHandler:^BOOL(NSRect rect) { flipped:NO
NSBezierPath* bezierPath = [NSBezierPath drawingHandler:^BOOL(NSRect rect) {
bezierPathWithRoundedRect:rect NSBezierPath* bezierPath = [NSBezierPath
xRadius:radius bezierPathWithRoundedRect:rect
yRadius:radius]; xRadius:radius
[[NSColor blackColor] set]; yRadius:radius];
[bezierPath fill]; [[NSColor blackColor] set];
return YES; [bezierPath fill];
}]; return YES;
[maskImage setCapInsets:NSEdgeInsetsMake(radius, radius, radius, radius)]; }];
[maskImage setResizingMode:NSImageResizingModeStretch]; [maskImage setCapInsets:NSEdgeInsetsMake(radius, radius, radius, radius)];
[maskImage setResizingMode:NSImageResizingModeStretch];
[effect_view setMaskImage:maskImage]; [effect_view setMaskImage:maskImage];
[window_ setCornerMask:maskImage]; [window_ setCornerMask:maskImage];
}
[[window_ contentView] addSubview:effect_view [[window_ contentView] addSubview:effect_view
positioned:NSWindowBelow positioned:NSWindowBelow