From 290b221d7902bf9f221f7f0020d0cd069542fad1 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Wed, 26 Aug 2015 15:45:38 +0800 Subject: [PATCH] mac: Do not set rounded corner by adding layer --- atom/browser/native_window_mac.h | 3 -- atom/browser/native_window_mac.mm | 58 +++++++++---------------------- vendor/brightray | 2 +- 3 files changed, 17 insertions(+), 46 deletions(-) diff --git a/atom/browser/native_window_mac.h b/atom/browser/native_window_mac.h index e54dc6ad87f6..20ad60531498 100644 --- a/atom/browser/native_window_mac.h +++ b/atom/browser/native_window_mac.h @@ -82,9 +82,6 @@ class NativeWindowMac : public NativeWindow { // Called to handle a mouse event. void HandleMouseEvent(NSEvent* event); - // Clip web view to rounded corner. - void ClipWebView(); - protected: // NativeWindow: void HandleKeyboardEvent( diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index b0649c4a80cf..64f7c11f997b 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -22,9 +22,6 @@ namespace { -// The radius of rounded corner. -const CGFloat kAtomWindowCornerRadius = 4.0; - // Prevents window from resizing during the scope. class ScopedDisableResize { public: @@ -41,10 +38,6 @@ bool ScopedDisableResize::disable_resize_ = false; } // namespace -@interface NSView (PrivateMethods) -- (CGFloat)roundedCornerRadius; -@end - // This view always takes the size of its superview. It is intended to be used // as a NSWindow's contentView. It is needed because NSWindow's implementation // explicitly resizes the contentView at inopportune times. @@ -153,9 +146,6 @@ bool ScopedDisableResize::disable_resize_ = false; } - (void)windowDidResize:(NSNotification*)notification { - if (!shell_->has_frame()) - shell_->ClipWebView(); - shell_->NotifyWindowResize(); } @@ -613,8 +603,8 @@ void NativeWindowMac::Center() { } void NativeWindowMac::SetTitle(const std::string& title) { - // We don't want the title to show in transparent window. - if (transparent()) + // We don't want the title to show in transparent or frameless window. + if (transparent() || !has_frame()) return; [window_ setTitle:base::SysUTF8ToNSString(title)]; @@ -804,35 +794,27 @@ void NativeWindowMac::HandleKeyboardEvent( } void NativeWindowMac::InstallView() { + // Make sure the bottom corner is rounded: http://crbug.com/396264. + [[window_ contentView] setWantsLayer:YES]; + NSView* view = inspectable_web_contents()->GetView()->GetNativeView(); if (has_frame()) { - // Add layer with white background for the contents view. - base::scoped_nsobject layer([[CALayer alloc] init]); - [layer setBackgroundColor:CGColorGetConstantColor(kCGColorWhite)]; - [view setLayer:layer]; [view setFrame:[[window_ contentView] bounds]]; [[window_ contentView] addSubview:view]; } else { - if (base::mac::IsOSYosemiteOrLater()) { - // In OSX 10.10, adding subviews to the root view for the NSView hierarchy - // produces warnings. To eliminate the warnings, we resize the contentView - // to fill the window, and add subviews to that. - // http://crbug.com/380412 - content_view_.reset([[FullSizeContentView alloc] init]); - [content_view_ - setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; - [content_view_ setFrame:[[[window_ contentView] superview] bounds]]; - [window_ setContentView:content_view_]; + // In OSX 10.10, adding subviews to the root view for the NSView hierarchy + // produces warnings. To eliminate the warnings, we resize the contentView + // to fill the window, and add subviews to that. + // http://crbug.com/380412 + content_view_.reset([[FullSizeContentView alloc] init]); + [content_view_ + setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; + [content_view_ setFrame:[[[window_ contentView] superview] bounds]]; + [window_ setContentView:content_view_]; - [view setFrame:[content_view_ bounds]]; - [content_view_ addSubview:view]; - } else { - NSView* frameView = [[window_ contentView] superview]; - [view setFrame:[frameView bounds]]; - [frameView addSubview:view]; - } + [view setFrame:[content_view_ bounds]]; + [content_view_ addSubview:view]; - ClipWebView(); InstallDraggableRegionView(); [[window_ standardWindowButton:NSWindowZoomButton] setHidden:YES]; @@ -851,14 +833,6 @@ void NativeWindowMac::UninstallView() { [view removeFromSuperview]; } -void NativeWindowMac::ClipWebView() { - if (!web_contents()) - return; - NSView* webView = web_contents()->GetNativeView(); - webView.layer.masksToBounds = YES; - webView.layer.cornerRadius = kAtomWindowCornerRadius; -} - void NativeWindowMac::InstallDraggableRegionView() { NSView* webView = web_contents()->GetNativeView(); base::scoped_nsobject controlRegion( diff --git a/vendor/brightray b/vendor/brightray index 5b2a73c68a98..0bf81275795b 160000 --- a/vendor/brightray +++ b/vendor/brightray @@ -1 +1 @@ -Subproject commit 5b2a73c68a986780e67eb2e738327d35c7c1c21e +Subproject commit 0bf81275795b15eb361a1fd213ae9c7c1f60bdea