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

Side by Side Diff: ui/message_center/cocoa/notification_controller.mm

Issue 131453005: Make notification buttons draw a background so text gets subpixel AA. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nits. Created 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "ui/message_center/cocoa/notification_controller.h" 5 #import "ui/message_center/cocoa/notification_controller.h"
6 6
7 #include "base/mac/foundation_util.h" 7 #include "base/mac/foundation_util.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/sys_string_conversions.h" 9 #include "base/strings/sys_string_conversions.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 45
46 path = [NSBezierPath bezierPathWithRoundedRect:sliceRect 46 path = [NSBezierPath bezierPathWithRoundedRect:sliceRect
47 xRadius:message_center::kProgressBarCornerRadius 47 xRadius:message_center::kProgressBarCornerRadius
48 yRadius:message_center::kProgressBarCornerRadius]; 48 yRadius:message_center::kProgressBarCornerRadius];
49 [gfx::SkColorToCalibratedNSColor(message_center::kProgressBarSliceColor) set]; 49 [gfx::SkColorToCalibratedNSColor(message_center::kProgressBarSliceColor) set];
50 [path fill]; 50 [path fill];
51 } 51 }
52 @end 52 @end
53 53
54 //////////////////////////////////////////////////////////////////////////////// 54 ////////////////////////////////////////////////////////////////////////////////
55 @interface MCNotificationButton : NSButton
56 @end
57
58 @implementation MCNotificationButton
59 // drawRect: needs to fill the button with a background, otherwise we don't get
60 // subpixel antialiasing.
61 - (void)drawRect:(NSRect)dirtyRect {
62 NSColor* color = gfx::SkColorToCalibratedNSColor(
63 message_center::kNotificationBackgroundColor);
64 [color set];
65 NSRectFill(dirtyRect);
66 [super drawRect:dirtyRect];
67 }
68 @end
55 69
56 @interface MCNotificationButtonCell : NSButtonCell { 70 @interface MCNotificationButtonCell : NSButtonCell {
57 BOOL hovered_; 71 BOOL hovered_;
58 } 72 }
59 @end 73 @end
60 74
75 ////////////////////////////////////////////////////////////////////////////////
61 @implementation MCNotificationButtonCell 76 @implementation MCNotificationButtonCell
77 - (BOOL)isOpaque {
78 return YES;
79 }
80
62 - (void)drawBezelWithFrame:(NSRect)frame inView:(NSView*)controlView { 81 - (void)drawBezelWithFrame:(NSRect)frame inView:(NSView*)controlView {
63 // Else mouseEntered: and mouseExited: won't be called and hovered_ won't be 82 // Else mouseEntered: and mouseExited: won't be called and hovered_ won't be
64 // valid. 83 // valid.
65 DCHECK([self showsBorderOnlyWhileMouseInside]); 84 DCHECK([self showsBorderOnlyWhileMouseInside]);
66 85
67 if (!hovered_) 86 if (!hovered_)
68 return; 87 return;
69 [gfx::SkColorToCalibratedNSColor( 88 [gfx::SkColorToCalibratedNSColor(
70 message_center::kHoveredButtonBackgroundColor) set]; 89 message_center::kHoveredButtonBackgroundColor) set];
71 NSRectFill(frame); 90 NSRectFill(frame);
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 bottomView_.reset([[NSView alloc] initWithFrame:frame]); 498 bottomView_.reset([[NSView alloc] initWithFrame:frame]);
480 CGFloat y = 0; 499 CGFloat y = 0;
481 500
482 // Create action buttons if appropriate, bottom-up. 501 // Create action buttons if appropriate, bottom-up.
483 std::vector<message_center::ButtonInfo> buttons = notification->buttons(); 502 std::vector<message_center::ButtonInfo> buttons = notification->buttons();
484 for (int i = buttons.size() - 1; i >= 0; --i) { 503 for (int i = buttons.size() - 1; i >= 0; --i) {
485 message_center::ButtonInfo buttonInfo = buttons[i]; 504 message_center::ButtonInfo buttonInfo = buttons[i];
486 NSRect buttonFrame = frame; 505 NSRect buttonFrame = frame;
487 buttonFrame.origin = NSMakePoint(0, y); 506 buttonFrame.origin = NSMakePoint(0, y);
488 buttonFrame.size.height = message_center::kButtonHeight; 507 buttonFrame.size.height = message_center::kButtonHeight;
489 base::scoped_nsobject<NSButton> button( 508 base::scoped_nsobject<MCNotificationButton> button(
490 [[NSButton alloc] initWithFrame:buttonFrame]); 509 [[MCNotificationButton alloc] initWithFrame:buttonFrame]);
491 base::scoped_nsobject<MCNotificationButtonCell> cell( 510 base::scoped_nsobject<MCNotificationButtonCell> cell(
492 [[MCNotificationButtonCell alloc] 511 [[MCNotificationButtonCell alloc]
493 initTextCell:base::SysUTF16ToNSString(buttonInfo.title)]); 512 initTextCell:base::SysUTF16ToNSString(buttonInfo.title)]);
494 [cell setShowsBorderOnlyWhileMouseInside:YES]; 513 [cell setShowsBorderOnlyWhileMouseInside:YES];
495 [button setCell:cell]; 514 [button setCell:cell];
496 [button setImage:buttonInfo.icon.AsNSImage()]; 515 [button setImage:buttonInfo.icon.AsNSImage()];
497 [button setBezelStyle:NSSmallSquareBezelStyle]; 516 [button setBezelStyle:NSSmallSquareBezelStyle];
498 [button setImagePosition:NSImageLeft]; 517 [button setImagePosition:NSImageLeft];
499 [button setTag:i]; 518 [button setTag:i];
500 [button setTarget:self]; 519 [button setTarget:self];
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 if (gfx::GetStringWidth(last, font_list) > width) 799 if (gfx::GetStringWidth(last, font_list) > width)
781 last = gfx::ElideText(last, font_list, width, gfx::ELIDE_AT_END); 800 last = gfx::ElideText(last, font_list, width, gfx::ELIDE_AT_END);
782 wrapped.resize(lines - 1); 801 wrapped.resize(lines - 1);
783 wrapped.push_back(last); 802 wrapped.push_back(last);
784 } 803 }
785 804
786 return lines == 1 ? wrapped[0] : JoinString(wrapped, '\n'); 805 return lines == 1 ? wrapped[0] : JoinString(wrapped, '\n');
787 } 806 }
788 807
789 @end 808 @end
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698