Index: chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.mm |
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..413cce426d791837f28b72184670093496ecc4a9 |
--- /dev/null |
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.mm |
@@ -0,0 +1,90 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h" |
+ |
+#import "base/logging.h" |
+#import "base/memory/scoped_nsobject.h" |
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h" |
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" |
+#import "chrome/browser/ui/cocoa/image_utils.h" |
+#import "third_party/GTM/AppKit/GTMNSColor+Luminance.h" |
+#import "third_party/GTM/AppKit/GTMNSBezierPath+RoundRect.h" |
+ |
+using bookmarks::kBookmarkBarMenuCornerRadius; |
+ |
+@implementation BookmarkBarFolderWindow |
+ |
+- (id)initWithContentRect:(NSRect)contentRect |
+ styleMask:(NSUInteger)windowStyle |
+ backing:(NSBackingStoreType)bufferingType |
+ defer:(BOOL)deferCreation { |
+ if ((self = [super initWithContentRect:contentRect |
+ styleMask:NSBorderlessWindowMask // override |
+ backing:bufferingType |
+ defer:deferCreation])) { |
+ [self setBackgroundColor:[NSColor clearColor]]; |
+ [self setOpaque:NO]; |
+ } |
+ return self; |
+} |
+ |
+- (BOOL)canBecomeKeyWindow { |
+ return YES; |
+} |
+ |
+- (BOOL)canBecomeMainWindow { |
+ return NO; |
+} |
+ |
+// Override of keyDown as the NSWindow default implementation beeps. |
+- (void)keyDown:(NSEvent *)theEvent { |
+} |
+ |
+@end |
+ |
+ |
+@implementation BookmarkBarFolderWindowContentView |
+ |
+- (void)drawRect:(NSRect)rect { |
+ // Like NSMenus, only the bottom corners are rounded. |
+ NSBezierPath* bezier = |
+ [NSBezierPath gtm_bezierPathWithRoundRect:[self bounds] |
+ topLeftCornerRadius:kBookmarkBarMenuCornerRadius |
+ topRightCornerRadius:kBookmarkBarMenuCornerRadius |
+ bottomLeftCornerRadius:kBookmarkBarMenuCornerRadius |
+ bottomRightCornerRadius:kBookmarkBarMenuCornerRadius]; |
+ NSColor* startColor = [NSColor colorWithCalibratedWhite:0.91 alpha:1.0]; |
+ NSColor* midColor = |
+ [startColor gtm_colorAdjustedFor:GTMColorationLightMidtone faded:YES]; |
+ NSColor* endColor = |
+ [startColor gtm_colorAdjustedFor:GTMColorationLightPenumbra faded:YES]; |
+ |
+ scoped_nsobject<NSGradient> gradient( |
+ [[NSGradient alloc] initWithColorsAndLocations:startColor, 0.0, |
+ midColor, 0.25, |
+ endColor, 0.5, |
+ midColor, 0.75, |
+ startColor, 1.0, |
+ nil]); |
+ [gradient drawInBezierPath:bezier angle:0.0]; |
+} |
+ |
+@end |
+ |
+ |
+@implementation BookmarkBarFolderWindowScrollView |
+ |
+// We want "draw background" of the NSScrollView in the xib to be NOT |
+// checked. That allows us to round the bottom corners of the folder |
+// window. However that also allows some scrollWheel: events to leak |
+// into the NSWindow behind it (even in a different application). |
+// Better to plug the scroll leak than to round corners for M5. |
+- (void)scrollWheel:(NSEvent *)theEvent { |
+ DCHECK([[[self window] windowController] |
+ respondsToSelector:@selector(scrollWheel:)]); |
+ [[[self window] windowController] scrollWheel:theEvent]; |
+} |
+ |
+@end |