OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/tabs/tab_strip_controller.h" | 5 #import "chrome/browser/ui/cocoa/tabs/tab_strip_controller.h" |
6 | 6 |
7 #import <QuartzCore/QuartzCore.h> | 7 #import <QuartzCore/QuartzCore.h> |
8 | 8 |
9 #include <cmath> | 9 #include <cmath> |
10 #include <limits> | 10 #include <limits> |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 } | 215 } |
216 | 216 |
217 [mask drawAtPoint:NSZeroPoint | 217 [mask drawAtPoint:NSZeroPoint |
218 fromRect:NSMakeRect(0, 0, width, height) | 218 fromRect:NSMakeRect(0, 0, width, height) |
219 operation:NSCompositeDestinationIn | 219 operation:NSCompositeDestinationIn |
220 fraction:1.0]; | 220 fraction:1.0]; |
221 }) autorelease]; | 221 }) autorelease]; |
222 } | 222 } |
223 | 223 |
224 // Paints |overlay| on top of |ground|. | 224 // Paints |overlay| on top of |ground|. |
225 NSImage* Overlay(NSImage* ground, NSImage* overlay) { | 225 NSImage* Overlay(NSImage* ground, NSImage* overlay, CGFloat alpha) { |
226 DCHECK_EQ([ground size].width, [overlay size].width); | 226 DCHECK_EQ([ground size].width, [overlay size].width); |
227 DCHECK_EQ([ground size].height, [overlay size].height); | 227 DCHECK_EQ([ground size].height, [overlay size].height); |
228 | 228 |
229 return [CreateImageWithSize([ground size], ^(NSSize size) { | 229 return [CreateImageWithSize([ground size], ^(NSSize size) { |
230 CGFloat width = size.width; | 230 CGFloat width = size.width; |
231 CGFloat height = size.height; | 231 CGFloat height = size.height; |
232 [ground drawAtPoint:NSZeroPoint | 232 [ground drawAtPoint:NSZeroPoint |
233 fromRect:NSMakeRect(0, 0, width, height) | 233 fromRect:NSMakeRect(0, 0, width, height) |
234 operation:NSCompositeCopy | 234 operation:NSCompositeCopy |
235 fraction:1.0]; | 235 fraction:1.0]; |
236 [overlay drawAtPoint:NSZeroPoint | 236 [overlay drawAtPoint:NSZeroPoint |
237 fromRect:NSMakeRect(0, 0, width, height) | 237 fromRect:NSMakeRect(0, 0, width, height) |
238 operation:NSCompositeSourceOver | 238 operation:NSCompositeSourceOver |
239 fraction:1.0]; | 239 fraction:alpha]; |
240 }) autorelease]; | 240 }) autorelease]; |
241 } | 241 } |
242 | 242 |
243 } // namespace | 243 } // namespace |
244 | 244 |
245 @interface TabStripController (Private) | 245 @interface TabStripController (Private) |
246 - (void)addSubviewToPermanentList:(NSView*)aView; | 246 - (void)addSubviewToPermanentList:(NSView*)aView; |
247 - (void)regenerateSubviewList; | 247 - (void)regenerateSubviewList; |
248 - (NSInteger)indexForContentsView:(NSView*)view; | 248 - (NSInteger)indexForContentsView:(NSView*)view; |
249 - (NSImageView*)iconImageViewForContents:(content::WebContents*)contents; | 249 - (NSImageView*)iconImageViewForContents:(content::WebContents*)contents; |
(...skipping 1947 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2197 | 2197 |
2198 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 2198 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
2199 NSImage* mask = rb.GetNativeImageNamed(IDR_NEWTAB_BUTTON_MASK).ToNSImage(); | 2199 NSImage* mask = rb.GetNativeImageNamed(IDR_NEWTAB_BUTTON_MASK).ToNSImage(); |
2200 NSImage* normal = rb.GetNativeImageNamed(IDR_NEWTAB_BUTTON).ToNSImage(); | 2200 NSImage* normal = rb.GetNativeImageNamed(IDR_NEWTAB_BUTTON).ToNSImage(); |
2201 NSImage* hover = rb.GetNativeImageNamed(IDR_NEWTAB_BUTTON_H).ToNSImage(); | 2201 NSImage* hover = rb.GetNativeImageNamed(IDR_NEWTAB_BUTTON_H).ToNSImage(); |
2202 NSImage* pressed = rb.GetNativeImageNamed(IDR_NEWTAB_BUTTON_P).ToNSImage(); | 2202 NSImage* pressed = rb.GetNativeImageNamed(IDR_NEWTAB_BUTTON_P).ToNSImage(); |
2203 | 2203 |
2204 NSImage* foreground = ApplyMask( | 2204 NSImage* foreground = ApplyMask( |
2205 theme->GetNSImageNamed(IDR_THEME_TAB_BACKGROUND, true), mask); | 2205 theme->GetNSImageNamed(IDR_THEME_TAB_BACKGROUND, true), mask); |
2206 | 2206 |
2207 [[newTabButton_ cell] setImage:Overlay(foreground, normal) | 2207 [[newTabButton_ cell] setImage:Overlay(foreground, normal, 1.0) |
2208 forButtonState:image_button_cell::kDefaultState]; | 2208 forButtonState:image_button_cell::kDefaultState]; |
2209 [[newTabButton_ cell] setImage:Overlay(foreground, hover) | 2209 [[newTabButton_ cell] setImage:Overlay(foreground, hover, 1.0) |
2210 forButtonState:image_button_cell::kHoverState]; | 2210 forButtonState:image_button_cell::kHoverState]; |
2211 [[newTabButton_ cell] setImage:Overlay(foreground, pressed) | 2211 [[newTabButton_ cell] setImage:Overlay(foreground, pressed, 1.0) |
2212 forButtonState:image_button_cell::kPressedState]; | 2212 forButtonState:image_button_cell::kPressedState]; |
2213 | 2213 |
2214 // IDR_THEME_TAB_BACKGROUND_INACTIVE is only used with the default theme. | 2214 // IDR_THEME_TAB_BACKGROUND_INACTIVE is only used with the default theme. |
2215 if (theme->UsingDefaultTheme()) { | 2215 if (theme->UsingDefaultTheme()) { |
| 2216 const CGFloat alpha = tabs::kImageNoFocusAlpha; |
2216 NSImage* background = ApplyMask( | 2217 NSImage* background = ApplyMask( |
2217 theme->GetNSImageNamed(IDR_THEME_TAB_BACKGROUND_INACTIVE, true), mask); | 2218 theme->GetNSImageNamed(IDR_THEME_TAB_BACKGROUND_INACTIVE, true), mask); |
2218 [[newTabButton_ cell] setImage:Overlay(background, normal) | 2219 [[newTabButton_ cell] setImage:Overlay(background, normal, alpha) |
2219 forButtonState:image_button_cell::kDefaultStateBackground]; | 2220 forButtonState:image_button_cell::kDefaultStateBackground]; |
2220 [[newTabButton_ cell] setImage:Overlay(background, hover) | 2221 [[newTabButton_ cell] setImage:Overlay(background, hover, alpha) |
2221 forButtonState:image_button_cell::kHoverStateBackground]; | 2222 forButtonState:image_button_cell::kHoverStateBackground]; |
2222 } else { | 2223 } else { |
2223 [[newTabButton_ cell] setImage:nil | 2224 [[newTabButton_ cell] setImage:nil |
2224 forButtonState:image_button_cell::kDefaultStateBackground]; | 2225 forButtonState:image_button_cell::kDefaultStateBackground]; |
2225 [[newTabButton_ cell] setImage:nil | 2226 [[newTabButton_ cell] setImage:nil |
2226 forButtonState:image_button_cell::kHoverStateBackground]; | 2227 forButtonState:image_button_cell::kHoverStateBackground]; |
2227 } | 2228 } |
2228 } | 2229 } |
2229 | 2230 |
2230 @end | 2231 @end |
2231 | 2232 |
2232 NSView* GetSheetParentViewForWebContents(WebContents* web_contents) { | 2233 NSView* GetSheetParentViewForWebContents(WebContents* web_contents) { |
2233 // View hierarchy of the contents view: | 2234 // View hierarchy of the contents view: |
2234 // NSView -- switchView, same for all tabs | 2235 // NSView -- switchView, same for all tabs |
2235 // +- NSView -- TabContentsController's view | 2236 // +- NSView -- TabContentsController's view |
2236 // +- TabContentsViewCocoa | 2237 // +- TabContentsViewCocoa |
2237 // | 2238 // |
2238 // Changing it? Do not forget to modify | 2239 // Changing it? Do not forget to modify |
2239 // -[TabStripController swapInTabAtIndex:] too. | 2240 // -[TabStripController swapInTabAtIndex:] too. |
2240 return [web_contents->GetNativeView() superview]; | 2241 return [web_contents->GetNativeView() superview]; |
2241 } | 2242 } |
OLD | NEW |