Index: chrome/browser/ui/cocoa/apps/native_app_window_cocoa.mm |
diff --git a/chrome/browser/ui/cocoa/apps/native_app_window_cocoa.mm b/chrome/browser/ui/cocoa/apps/native_app_window_cocoa.mm |
index e823f1903b4ef27fc5c72236a2a54173c97dc7aa..1d3c9f4dff8470e7e6f120c83c5904657426cde3 100644 |
--- a/chrome/browser/ui/cocoa/apps/native_app_window_cocoa.mm |
+++ b/chrome/browser/ui/cocoa/apps/native_app_window_cocoa.mm |
@@ -11,6 +11,7 @@ |
#include "base/strings/sys_string_conversions.h" |
#include "chrome/browser/apps/app_shim/extension_app_shim_handler_mac.h" |
#include "chrome/browser/profiles/profile.h" |
+#import "chrome/browser/ui/cocoa/apps/titlebar_background_view.h" |
#include "chrome/browser/ui/cocoa/browser_window_utils.h" |
#import "chrome/browser/ui/cocoa/chrome_event_processing_window.h" |
#include "chrome/browser/ui/cocoa/extensions/extension_keybinding_registry_cocoa.h" |
@@ -199,45 +200,6 @@ std::vector<gfx::Rect> CalculateNonDraggableRegions( |
@end |
-// A view that paints a solid color. Used to change the title bar background. |
-@interface TitlebarBackgroundView : NSView { |
- @private |
- base::scoped_nsobject<NSColor> color_; |
- base::scoped_nsobject<NSColor> inactiveColor_; |
-} |
-- (void)setColor:(NSColor*)color |
- inactiveColor:(NSColor*)inactiveColor; |
-@end |
- |
-@implementation TitlebarBackgroundView |
- |
-- (void)drawRect:(NSRect)rect { |
- // Only the top corners are rounded. For simplicity, round all 4 corners but |
- // draw the bottom corners outside of the visible bounds. |
- CGFloat cornerRadius = 4.0; |
- NSRect roundedRect = [self bounds]; |
- roundedRect.origin.y -= cornerRadius; |
- roundedRect.size.height += cornerRadius; |
- [[NSBezierPath bezierPathWithRoundedRect:roundedRect |
- xRadius:cornerRadius |
- yRadius:cornerRadius] addClip]; |
- if ([[self window] isMainWindow] || [[self window] isKeyWindow]) |
- [color_ set]; |
- else |
- [inactiveColor_ set]; |
- NSRectFill(rect); |
-} |
- |
-- (void)setColor:(NSColor*)color |
- inactiveColor:(NSColor*)inactiveColor { |
- color_.reset([color retain]); |
- inactiveColor_.reset([inactiveColor retain]); |
-} |
- |
-@end |
- |
-// TODO(jamescook): Should these be AppNSWindow to match AppWindow? |
-// http://crbug.com/344082 |
@interface AppNSWindow : ChromeEventProcessingWindow |
@end |
@@ -332,25 +294,9 @@ NativeAppWindowCocoa::NativeAppWindowCocoa( |
[window setTitle:base::SysUTF8ToNSString(name)]; |
[[window contentView] setWantsLayer:YES]; |
if (has_frame_ && has_frame_color_) { |
- // AppKit only officially supports adding subviews to the window's |
- // contentView and not its superview (an NSNextStepFrame). The 10.10 SDK |
- // allows adding an NSTitlebarAccessoryViewController to a window, but the |
- // view can only be placed above the window control buttons, so we'd have to |
- // replicate those. |
- NSView* window_view = [[window contentView] superview]; |
- CGFloat height = NSHeight([window_view bounds]) - |
- NSHeight([[window contentView] bounds]); |
- titlebar_background_view_.reset([[TitlebarBackgroundView alloc] |
- initWithFrame:NSMakeRect(0, NSMaxY([window_view bounds]) - height, |
- NSWidth([window_view bounds]), height)]); |
- [titlebar_background_view_ |
- setAutoresizingMask:NSViewWidthSizable | NSViewMinYMargin]; |
- [window_view addSubview:titlebar_background_view_ |
- positioned:NSWindowBelow |
- relativeTo:nil]; |
- [titlebar_background_view_ |
- setColor:gfx::SkColorToSRGBNSColor(active_frame_color_) |
- inactiveColor:gfx::SkColorToSRGBNSColor(inactive_frame_color_)]; |
+ [TitlebarBackgroundView addToNSWindow:window |
+ activeColor:active_frame_color_ |
+ inactiveColor:inactive_frame_color_]; |
} |
if (base::mac::IsOSSnowLeopard() && |
@@ -788,7 +734,6 @@ void NativeAppWindowCocoa::WindowWillClose() { |
} |
void NativeAppWindowCocoa::WindowDidBecomeKey() { |
- [titlebar_background_view_ setNeedsDisplay:YES]; |
tapted
2015/05/12 06:15:43
why isn't this needed any more (also in *Resign)
jackhou1
2015/05/14 02:59:13
I think it was redundant. The -[NSView drawRect:]
tapted
2015/05/14 04:23:50
So is something in NSWindow already setting setNee
jackhou1
2015/05/14 06:20:40
Yeah, it happens whenever the window changes focus
|
content::RenderWidgetHostView* rwhv = |
WebContents()->GetRenderWidgetHostView(); |
if (rwhv) |
@@ -806,8 +751,6 @@ void NativeAppWindowCocoa::WindowDidResignKey() { |
if ([NSApp isActive] && ([NSApp keyWindow] == window())) |
return; |
- [titlebar_background_view_ setNeedsDisplay:YES]; |
- |
WebContents()->StoreFocus(); |
content::RenderWidgetHostView* rwhv = |