Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(197)

Side by Side Diff: chrome/browser/ui/cocoa/toolbar/toolbar_button_cocoa.mm

Issue 2618403002: Reland crrev.com/8283cad74e0cad4840d1f with fix for static initializers. (Closed)
Patch Set: re-up Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/toolbar/toolbar_button_cocoa.h" 5 #import "chrome/browser/ui/cocoa/toolbar/toolbar_button_cocoa.h"
6 6
7 #include "base/mac/foundation_util.h" 7 #include "base/mac/foundation_util.h"
8 #include "base/mac/sdk_forward_declarations.h" 8 #include "base/mac/sdk_forward_declarations.h"
9 #include "chrome/app/vector_icons/vector_icons.h"
9 #import "chrome/browser/ui/cocoa/image_button_cell.h" 10 #import "chrome/browser/ui/cocoa/image_button_cell.h"
10 #import "chrome/browser/ui/cocoa/l10n_util.h" 11 #import "chrome/browser/ui/cocoa/l10n_util.h"
11 #import "chrome/browser/ui/cocoa/view_id_util.h" 12 #import "chrome/browser/ui/cocoa/view_id_util.h"
12 #include "skia/ext/skia_utils_mac.h" 13 #include "skia/ext/skia_utils_mac.h"
13 #import "ui/base/cocoa/nsview_additions.h" 14 #import "ui/base/cocoa/nsview_additions.h"
14 #include "ui/base/material_design/material_design_controller.h" 15 #include "ui/base/material_design/material_design_controller.h"
15 #include "ui/base/theme_provider.h" 16 #include "ui/base/theme_provider.h"
16 #include "ui/gfx/image/image_skia_util_mac.h" 17 #include "ui/gfx/image/image_skia_util_mac.h"
17 #include "ui/gfx/paint_vector_icon.h" 18 #include "ui/gfx/paint_vector_icon.h"
18 19
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 return handleMiddleClick_ && [theEvent buttonNumber] == 2; 198 return handleMiddleClick_ && [theEvent buttonNumber] == 2;
198 } 199 }
199 200
200 - (void)drawFocusRingMask { 201 - (void)drawFocusRingMask {
201 // Match the hover image's bezel. 202 // Match the hover image's bezel.
202 [[NSBezierPath bezierPathWithRoundedRect:NSInsetRect([self bounds], 2, 2) 203 [[NSBezierPath bezierPathWithRoundedRect:NSInsetRect([self bounds], 2, 2)
203 xRadius:2 204 xRadius:2
204 yRadius:2] fill]; 205 yRadius:2] fill];
205 } 206 }
206 207
207 - (gfx::VectorIconId)vectorIconId { 208 - (const gfx::VectorIcon*)vectorIcon {
208 BOOL isRTL = cocoa_l10n_util::ShouldDoExperimentalRTLLayout(); 209 BOOL isRTL = cocoa_l10n_util::ShouldDoExperimentalRTLLayout();
209 switch ([self viewID]) { 210 switch ([self viewID]) {
210 case VIEW_ID_BACK_BUTTON: 211 case VIEW_ID_BACK_BUTTON:
211 return isRTL ? gfx::VectorIconId::NAVIGATE_FORWARD 212 return isRTL ? &kNavigateForwardIcon : &kNavigateBackIcon;
212 : gfx::VectorIconId::NAVIGATE_BACK;
213 case VIEW_ID_FORWARD_BUTTON: 213 case VIEW_ID_FORWARD_BUTTON:
214 return isRTL ? gfx::VectorIconId::NAVIGATE_BACK 214 return isRTL ? &kNavigateBackIcon : &kNavigateForwardIcon;
215 : gfx::VectorIconId::NAVIGATE_FORWARD;
216 case VIEW_ID_HOME_BUTTON: 215 case VIEW_ID_HOME_BUTTON:
217 return gfx::VectorIconId::NAVIGATE_HOME; 216 return &kNavigateHomeIcon;
218 case VIEW_ID_APP_MENU: 217 case VIEW_ID_APP_MENU:
219 return gfx::VectorIconId::BROWSER_TOOLS; 218 return &kBrowserToolsIcon;
220 default: 219 default:
221 break; 220 break;
222 } 221 }
223 222
224 return gfx::VectorIconId::VECTOR_ICON_NONE; 223 return nullptr;
225 } 224 }
226 225
227 - (SkColor)vectorIconColor:(BOOL)themeIsDark { 226 - (SkColor)vectorIconColor:(BOOL)themeIsDark {
228 return themeIsDark ? SK_ColorWHITE : SkColorSetRGB(0x5A, 0x5A, 0x5A); 227 return themeIsDark ? SK_ColorWHITE : SkColorSetRGB(0x5A, 0x5A, 0x5A);
229 } 228 }
230 229
231 - (NSImage*)browserToolsIconForFillColor:(SkColor)fillColor { 230 - (NSImage*)browserToolsIconForFillColor:(SkColor)fillColor {
232 // Create a |BrowserToolsImageRep| to draw the browser tools icon using 231 // Create a |BrowserToolsImageRep| to draw the browser tools icon using
233 // the provided fill color. 232 // the provided fill color.
234 base::scoped_nsobject<BrowserToolsImageRep> imageRep( 233 base::scoped_nsobject<BrowserToolsImageRep> imageRep(
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 // ivar. 278 // ivar.
280 image_.reset([anImage retain]); 279 image_.reset([anImage retain]);
281 [self resetButtonStateImages]; 280 [self resetButtonStateImages];
282 } 281 }
283 282
284 - (void)resetButtonStateImages { 283 - (void)resetButtonStateImages {
285 NSImage* normalIcon = nil; 284 NSImage* normalIcon = nil;
286 NSImage* disabledIcon = nil; 285 NSImage* disabledIcon = nil;
287 BOOL isDarkTheme = NO; 286 BOOL isDarkTheme = NO;
288 287
289 gfx::VectorIconId iconId = [self vectorIconId]; 288 const gfx::VectorIcon* icon = [self vectorIcon];
290 if (iconId == gfx::VectorIconId::VECTOR_ICON_NONE) { 289 if (!icon) {
291 // If the button does not have a vector icon id (e.g. it's an extension 290 // If the button does not have a vector icon (e.g. it's an extension
292 // button), use its image. The hover, etc. images will be created using 291 // button), use its image. The hover, etc. images will be created using
293 // imageForIcon:withBackgroundStyle: so do the same for the default image. 292 // imageForIcon:withBackgroundStyle: so do the same for the default image.
294 // If we don't do this, the icon may not appear in the same place as in the 293 // If we don't do this, the icon may not appear in the same place as in the
295 // other states, causing the icon to appear to shift as you mouse over the 294 // other states, causing the icon to appear to shift as you mouse over the
296 // button. 295 // button.
297 NSImage* defaultImage = 296 NSImage* defaultImage =
298 [self imageForIcon:[self image] 297 [self imageForIcon:[self image]
299 withBackgroundStyle:ToolbarButtonImageBackgroundStyle::DEFAULT]; 298 withBackgroundStyle:ToolbarButtonImageBackgroundStyle::DEFAULT];
300 normalIcon = disabledIcon = defaultImage; 299 normalIcon = disabledIcon = defaultImage;
301 } else { 300 } else {
302 // Compute the normal and disabled vector icon colors. 301 // Compute the normal and disabled vector icon colors.
303 isDarkTheme = [[self window] hasDarkTheme]; 302 isDarkTheme = [[self window] hasDarkTheme];
304 const SkColor vectorIconColor = [self vectorIconColor:isDarkTheme]; 303 const SkColor vectorIconColor = [self vectorIconColor:isDarkTheme];
305 CGFloat normalAlpha = isDarkTheme ? 0xCC : 0xFF; 304 CGFloat normalAlpha = isDarkTheme ? 0xCC : 0xFF;
306 const SkColor normalColor = SkColorSetA(vectorIconColor, normalAlpha); 305 const SkColor normalColor = SkColorSetA(vectorIconColor, normalAlpha);
307 const SkColor disabledColor = SkColorSetA(vectorIconColor, 0x33); 306 const SkColor disabledColor = SkColorSetA(vectorIconColor, 0x33);
308 307
309 // Create the normal and disabled state icons. These icons are always the 308 // Create the normal and disabled state icons. These icons are always the
310 // same shape but use a different color. 309 // same shape but use a different color.
311 if (iconId == gfx::VectorIconId::BROWSER_TOOLS) { 310 if (icon == &kBrowserToolsIcon) {
312 normalIcon = [self browserToolsIconForFillColor:normalColor]; 311 normalIcon = [self browserToolsIconForFillColor:normalColor];
313 disabledIcon = [self browserToolsIconForFillColor:disabledColor]; 312 disabledIcon = [self browserToolsIconForFillColor:disabledColor];
314 } else { 313 } else {
315 normalIcon = NSImageFromImageSkia( 314 normalIcon = NSImageFromImageSkia(
316 gfx::CreateVectorIcon(iconId, 315 gfx::CreateVectorIcon(*icon,
317 kMDButtonIconSize.width, 316 kMDButtonIconSize.width,
318 normalColor)); 317 normalColor));
319 318
320 // The home button has no icon for its disabled state. 319 // The home button has no icon for its disabled state.
321 if (iconId != gfx::VectorIconId::NAVIGATE_RELOAD) { 320 if (icon != &kNavigateReloadIcon) {
322 disabledIcon = NSImageFromImageSkia( 321 disabledIcon = NSImageFromImageSkia(
323 gfx::CreateVectorIcon(iconId, 322 gfx::CreateVectorIcon(*icon,
324 kMDButtonIconSize.width, 323 kMDButtonIconSize.width,
325 disabledColor)); 324 disabledColor));
326 } 325 }
327 } 326 }
328 } 327 }
329 328
330 ImageButtonCell* theCell = base::mac::ObjCCast<ImageButtonCell>([self cell]); 329 ImageButtonCell* theCell = base::mac::ObjCCast<ImageButtonCell>([self cell]);
331 // Set the image for the default state, which is just the icon. 330 // Set the image for the default state, which is just the icon.
332 [theCell setImage:normalIcon forButtonState:image_button_cell::kDefaultState]; 331 [theCell setImage:normalIcon forButtonState:image_button_cell::kDefaultState];
333 332
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 377
379 - (void)windowDidChangeTheme { 378 - (void)windowDidChangeTheme {
380 // Update the hover and pressed image backgrounds to match the current theme. 379 // Update the hover and pressed image backgrounds to match the current theme.
381 [self resetButtonStateImages]; 380 [self resetButtonStateImages];
382 } 381 }
383 382
384 - (void)windowDidChangeActive { 383 - (void)windowDidChangeActive {
385 } 384 }
386 385
387 @end 386 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698