Browse Source

mac: Do not set rounded corner by adding layer

Cheng Zhao 9 years ago
parent
commit
290b221d79
3 changed files with 18 additions and 47 deletions
  1. 0 3
      atom/browser/native_window_mac.h
  2. 17 43
      atom/browser/native_window_mac.mm
  3. 1 1
      vendor/brightray

+ 0 - 3
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(

+ 17 - 43
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<CALayer> 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_];
-
-      [view setFrame:[content_view_ bounds]];
-      [content_view_ addSubview:view];
-    } else {
-      NSView* frameView = [[window_ contentView] superview];
-      [view setFrame:[frameView bounds]];
-      [frameView addSubview: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];
 
-    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<NSView> controlRegion(

+ 1 - 1
vendor/brightray

@@ -1 +1 @@
-Subproject commit 5b2a73c68a986780e67eb2e738327d35c7c1c21e
+Subproject commit 0bf81275795b15eb361a1fd213ae9c7c1f60bdea