OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "chrome/browser/ui/cocoa/new_tab_button.h" | 5 #import "chrome/browser/ui/cocoa/new_tab_button.h" |
6 | 6 |
7 #import "chrome/browser/ui/cocoa/image_button_cell.h" | 7 #import "chrome/browser/ui/cocoa/image_button_cell.h" |
8 #include "grit/theme_resources.h" | 8 #include "grit/theme_resources.h" |
9 #include "ui/base/resource/resource_bundle.h" | 9 #include "ui/base/resource/resource_bundle.h" |
10 | 10 |
| 11 namespace { |
| 12 |
| 13 NSImage* GetMaskImage() { |
| 14 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
| 15 return bundle.GetNativeImageNamed(IDR_NEWTAB_BUTTON_MASK).ToNSImage(); |
| 16 } |
| 17 |
| 18 } |
| 19 |
11 // A simple override of the ImageButtonCell to disable handling of | 20 // A simple override of the ImageButtonCell to disable handling of |
12 // -mouseEntered. | 21 // -mouseEntered. |
13 @interface NewTabButtonCell : ImageButtonCell | 22 @interface NewTabButtonCell : ImageButtonCell |
14 | 23 |
15 - (void)mouseEntered:(NSEvent*)theEvent; | 24 - (void)mouseEntered:(NSEvent*)theEvent; |
16 | 25 |
17 @end | 26 @end |
18 | 27 |
19 @implementation NewTabButtonCell | 28 @implementation NewTabButtonCell |
20 | 29 |
21 - (void)mouseEntered:(NSEvent*)theEvent { | 30 - (void)mouseEntered:(NSEvent*)theEvent { |
22 // Ignore this since the NTB enter is handled by the TabStripController. | 31 // Ignore this since the NTB enter is handled by the TabStripController. |
23 } | 32 } |
24 | 33 |
| 34 - (void)drawFocusRingMaskWithFrame:(NSRect)cellFrame inView:(NSView*)view { |
| 35 // Match the button's shape. |
| 36 [self drawImage:GetMaskImage() withFrame:cellFrame inView:view]; |
| 37 } |
| 38 |
25 @end | 39 @end |
26 | 40 |
27 | 41 |
28 @implementation NewTabButton | 42 @implementation NewTabButton |
29 | 43 |
30 + (Class)cellClass { | 44 + (Class)cellClass { |
31 return [NewTabButtonCell class]; | 45 return [NewTabButtonCell class]; |
32 } | 46 } |
33 | 47 |
34 - (BOOL)pointIsOverButton:(NSPoint)point { | 48 - (BOOL)pointIsOverButton:(NSPoint)point { |
35 NSPoint localPoint = [self convertPoint:point fromView:[self superview]]; | 49 NSPoint localPoint = [self convertPoint:point fromView:[self superview]]; |
36 NSRect pointRect = NSMakeRect(localPoint.x, localPoint.y, 1, 1); | 50 NSRect pointRect = NSMakeRect(localPoint.x, localPoint.y, 1, 1); |
37 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); | 51 NSImage* buttonMask = GetMaskImage(); |
38 NSImage* buttonMask = | |
39 bundle.GetNativeImageNamed(IDR_NEWTAB_BUTTON_MASK).ToNSImage(); | |
40 NSRect destinationRect = NSMakeRect( | 52 NSRect destinationRect = NSMakeRect( |
41 (NSWidth(self.bounds) - [buttonMask size].width) / 2, | 53 (NSWidth(self.bounds) - [buttonMask size].width) / 2, |
42 (NSHeight(self.bounds) - [buttonMask size].height) / 2, | 54 (NSHeight(self.bounds) - [buttonMask size].height) / 2, |
43 [buttonMask size].width, [buttonMask size].height); | 55 [buttonMask size].width, [buttonMask size].height); |
44 return [buttonMask hitTestRect:pointRect | 56 return [buttonMask hitTestRect:pointRect |
45 withImageDestinationRect:destinationRect | 57 withImageDestinationRect:destinationRect |
46 context:nil | 58 context:nil |
47 hints:nil | 59 hints:nil |
48 flipped:YES]; | 60 flipped:YES]; |
49 } | 61 } |
(...skipping 10 matching lines...) Expand all Loading... |
60 | 72 |
61 - (void)windowDidChangeTheme { | 73 - (void)windowDidChangeTheme { |
62 [self setNeedsDisplay:YES]; | 74 [self setNeedsDisplay:YES]; |
63 } | 75 } |
64 | 76 |
65 - (void)windowDidChangeActive { | 77 - (void)windowDidChangeActive { |
66 [self setNeedsDisplay:YES]; | 78 [self setNeedsDisplay:YES]; |
67 } | 79 } |
68 | 80 |
69 @end | 81 @end |
OLD | NEW |