OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h" | |
6 | |
7 #import "base/logging.h" | |
8 #import "base/memory/scoped_nsobject.h" | |
9 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h" | |
10 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" | |
11 #import "chrome/browser/ui/cocoa/image_utils.h" | |
12 #import "third_party/GTM/AppKit/GTMNSColor+Luminance.h" | |
13 #import "third_party/GTM/AppKit/GTMNSBezierPath+RoundRect.h" | |
14 | |
15 using bookmarks::kBookmarkBarMenuCornerRadius; | |
16 | |
17 @implementation BookmarkBarFolderWindow | |
18 | |
19 - (id)initWithContentRect:(NSRect)contentRect | |
20 styleMask:(NSUInteger)windowStyle | |
21 backing:(NSBackingStoreType)bufferingType | |
22 defer:(BOOL)deferCreation { | |
23 if ((self = [super initWithContentRect:contentRect | |
24 styleMask:NSBorderlessWindowMask // override | |
25 backing:bufferingType | |
26 defer:deferCreation])) { | |
27 [self setBackgroundColor:[NSColor clearColor]]; | |
28 [self setOpaque:NO]; | |
29 } | |
30 return self; | |
31 } | |
32 | |
33 - (BOOL)canBecomeKeyWindow { | |
34 return YES; | |
35 } | |
36 | |
37 - (BOOL)canBecomeMainWindow { | |
38 return NO; | |
39 } | |
40 | |
41 // Override of keyDown as the NSWindow default implementation beeps. | |
42 - (void)keyDown:(NSEvent *)theEvent { | |
43 } | |
44 | |
45 @end | |
46 | |
47 | |
48 @implementation BookmarkBarFolderWindowContentView | |
49 | |
50 - (void)drawRect:(NSRect)rect { | |
51 // Like NSMenus, only the bottom corners are rounded. | |
52 NSBezierPath* bezier = | |
53 [NSBezierPath gtm_bezierPathWithRoundRect:[self bounds] | |
54 topLeftCornerRadius:kBookmarkBarMenuCornerRadius | |
55 topRightCornerRadius:kBookmarkBarMenuCornerRadius | |
56 bottomLeftCornerRadius:kBookmarkBarMenuCornerRadius | |
57 bottomRightCornerRadius:kBookmarkBarMenuCornerRadius]; | |
58 NSColor* startColor = [NSColor colorWithCalibratedWhite:0.91 alpha:1.0]; | |
59 NSColor* midColor = | |
60 [startColor gtm_colorAdjustedFor:GTMColorationLightMidtone faded:YES]; | |
61 NSColor* endColor = | |
62 [startColor gtm_colorAdjustedFor:GTMColorationLightPenumbra faded:YES]; | |
63 | |
64 scoped_nsobject<NSGradient> gradient( | |
65 [[NSGradient alloc] initWithColorsAndLocations:startColor, 0.0, | |
66 midColor, 0.25, | |
67 endColor, 0.5, | |
68 midColor, 0.75, | |
69 startColor, 1.0, | |
70 nil]); | |
71 [gradient drawInBezierPath:bezier angle:0.0]; | |
72 } | |
73 | |
74 @end | |
75 | |
76 | |
77 @implementation BookmarkBarFolderWindowScrollView | |
78 | |
79 // We want "draw background" of the NSScrollView in the xib to be NOT | |
80 // checked. That allows us to round the bottom corners of the folder | |
81 // window. However that also allows some scrollWheel: events to leak | |
82 // into the NSWindow behind it (even in a different application). | |
83 // Better to plug the scroll leak than to round corners for M5. | |
84 - (void)scrollWheel:(NSEvent *)theEvent { | |
85 DCHECK([[[self window] windowController] | |
86 respondsToSelector:@selector(scrollWheel:)]); | |
87 [[[self window] windowController] scrollWheel:theEvent]; | |
88 } | |
89 | |
90 @end | |
OLD | NEW |