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

Side by Side Diff: chrome/browser/ui/cocoa/tabs/tab_view.mm

Issue 900613003: Mac: Make it easier for views to correctly draw with a theme. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gyp
Patch Set: Created 5 years, 10 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) 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_view.h" 5 #import "chrome/browser/ui/cocoa/tabs/tab_view.h"
6 6
7 #include "base/i18n/rtl.h" 7 #include "base/i18n/rtl.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/mac/sdk_forward_declarations.h" 9 #include "base/mac/sdk_forward_declarations.h"
10 #include "base/strings/sys_string_conversions.h" 10 #include "base/strings/sys_string_conversions.h"
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 }, 307 },
308 // Currently focused window. 308 // Currently focused window.
309 { 309 {
310 IDR_THEME_TAB_BACKGROUND, // Background tab. 310 IDR_THEME_TAB_BACKGROUND, // Background tab.
311 IDR_THEME_TOOLBAR, // Active tab. 311 IDR_THEME_TOOLBAR, // Active tab.
312 }, 312 },
313 }; 313 };
314 314
315 // Themes don't have an inactive image so only look for one if there's no 315 // Themes don't have an inactive image so only look for one if there's no
316 // theme. 316 // theme.
317 bool active = [[self window] isKeyWindow] || [[self window] isMainWindow] || 317 bool active =
318 !themeProvider->UsingDefaultTheme(); 318 [[self window] isMainWindow] || !themeProvider->UsingDefaultTheme();
319 return themeProvider->GetNSImageColorNamed(bitmapResources[active][selected]); 319 return themeProvider->GetNSImageColorNamed(bitmapResources[active][selected]);
320 } 320 }
321 321
322 // Draws the active tab background. 322 // Draws the active tab background.
323 - (void)drawFillForActiveTab:(NSRect)dirtyRect { 323 - (void)drawFillForActiveTab:(NSRect)dirtyRect {
324 NSColor* backgroundImageColor = [self backgroundColorForSelected:YES]; 324 NSColor* backgroundImageColor = [self backgroundColorForSelected:YES];
325 [backgroundImageColor set]; 325 [backgroundImageColor set];
326 326
327 // Themes can have partially transparent images. NSRectFill() is measurably 327 // Themes can have partially transparent images. NSRectFill() is measurably
328 // faster though, so call it for the known-safe default theme. 328 // faster though, so call it for the known-safe default theme.
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 options:NSGradientDrawsBeforeStartingLocation]; 422 options:NSGradientDrawsBeforeStartingLocation];
423 } 423 }
424 } 424 }
425 425
426 CGContextEndTransparencyLayer(cgContext); 426 CGContextEndTransparencyLayer(cgContext);
427 } 427 }
428 } 428 }
429 429
430 // Draws the tab outline. 430 // Draws the tab outline.
431 - (void)drawStroke:(NSRect)dirtyRect { 431 - (void)drawStroke:(NSRect)dirtyRect {
432 BOOL focused = [[self window] isKeyWindow] || [[self window] isMainWindow]; 432 BOOL focused = [[self window] isMainWindow];
433 CGFloat alpha = focused ? 1.0 : tabs::kImageNoFocusAlpha; 433 CGFloat alpha = focused ? 1.0 : tabs::kImageNoFocusAlpha;
434 434
435 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 435 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
436 float height = 436 float height =
437 [rb.GetNativeImageNamed(IDR_TAB_ACTIVE_LEFT).ToNSImage() size].height; 437 [rb.GetNativeImageNamed(IDR_TAB_ACTIVE_LEFT).ToNSImage() size].height;
438 if (state_ == NSOnState) { 438 if (state_ == NSOnState) {
439 NSDrawThreePartImage(NSMakeRect(0, 0, NSWidth([self bounds]), height), 439 NSDrawThreePartImage(NSMakeRect(0, 0, NSWidth([self bounds]), height),
440 rb.GetNativeImageNamed(IDR_TAB_ACTIVE_LEFT).ToNSImage(), 440 rb.GetNativeImageNamed(IDR_TAB_ACTIVE_LEFT).ToNSImage(),
441 rb.GetNativeImageNamed(IDR_TAB_ACTIVE_CENTER).ToNSImage(), 441 rb.GetNativeImageNamed(IDR_TAB_ACTIVE_CENTER).ToNSImage(),
442 rb.GetNativeImageNamed(IDR_TAB_ACTIVE_RIGHT).ToNSImage(), 442 rb.GetNativeImageNamed(IDR_TAB_ACTIVE_RIGHT).ToNSImage(),
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 if ([attribute isEqual:NSAccessibilityEnabledAttribute]) 634 if ([attribute isEqual:NSAccessibilityEnabledAttribute])
635 return [NSNumber numberWithBool:YES]; 635 return [NSNumber numberWithBool:YES];
636 636
637 return [super accessibilityAttributeValue:attribute]; 637 return [super accessibilityAttributeValue:attribute];
638 } 638 }
639 639
640 - (ViewID)viewID { 640 - (ViewID)viewID {
641 return VIEW_ID_TAB; 641 return VIEW_ID_TAB;
642 } 642 }
643 643
644 // ThemedWindowDrawing implementation.
645
646 - (void)windowDidChangeTheme {
647 [self setNeedsDisplay:YES];
648 }
649
650 - (void)windowDidChangeActive {
651 [self setNeedsDisplay:YES];
652 }
653
644 @end // @implementation TabView 654 @end // @implementation TabView
645 655
646 @implementation TabView (TabControllerInterface) 656 @implementation TabView (TabControllerInterface)
647 657
648 - (void)setController:(TabController*)controller { 658 - (void)setController:(TabController*)controller {
649 controller_ = controller; 659 controller_ = controller;
650 } 660 }
651 661
652 @end // @implementation TabView (TabControllerInterface) 662 @end // @implementation TabView (TabControllerInterface)
653 663
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
787 CGFloat middleWidth = tabWidth - leftWidth - rightWidth; 797 CGFloat middleWidth = tabWidth - leftWidth - rightWidth;
788 NSRect middleRect = NSMakeRect(leftWidth, 0, middleWidth, kFillHeight); 798 NSRect middleRect = NSMakeRect(leftWidth, 0, middleWidth, kFillHeight);
789 [[NSColor whiteColor] setFill]; 799 [[NSColor whiteColor] setFill];
790 NSRectFill(middleRect); 800 NSRectFill(middleRect);
791 801
792 maskCache_.reset(CGBitmapContextCreateImage(maskContext)); 802 maskCache_.reset(CGBitmapContextCreateImage(maskContext));
793 return maskCache_; 803 return maskCache_;
794 } 804 }
795 805
796 @end // @implementation TabView(Private) 806 @end // @implementation TabView(Private)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698