OLD | NEW |
---|---|
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 <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/mac/foundation_util.h" | 9 #include "base/mac/foundation_util.h" |
10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
196 } | 196 } |
197 [super accessibilityPerformAction:action]; | 197 [super accessibilityPerformAction:action]; |
198 } | 198 } |
199 @end | 199 @end |
200 | 200 |
201 //////////////////////////////////////////////////////////////////////////////// | 201 //////////////////////////////////////////////////////////////////////////////// |
202 | 202 |
203 @interface AccessibilityIgnoredBox : NSBox | 203 @interface AccessibilityIgnoredBox : NSBox |
204 @end | 204 @end |
205 | 205 |
206 // Ignore this element, but expose its children to accessibility. | |
206 @implementation AccessibilityIgnoredBox | 207 @implementation AccessibilityIgnoredBox |
207 - (BOOL)accessibilityIsIgnored { | 208 - (BOOL)accessibilityIsIgnored { |
208 return YES; | 209 return YES; |
209 } | 210 } |
211 | |
212 // Pretend this element has no children. | |
213 // TODO(petewil): Until we have alt text available, we will hide the children of | |
214 // the box also. Remove this override once alt text is set (by using | |
215 // NSAccessibilityDescriptionAttribute). | |
216 -(id) accessibilityAttributeValue:(NSString*) attribute { | |
Robert Sesek
2014/06/11 21:37:04
nit: space after - but not after )
Robert Sesek
2014/06/11 21:37:04
nit: no space after ) in arguments
Pete Williamson
2014/06/11 22:12:54
Done.
Pete Williamson
2014/06/11 22:12:54
Done.
| |
217 // If we get a request for NSAccessibilityChildrenAttribute, return an empty | |
218 // array to pretend we have no children. | |
219 if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) | |
220 return [[[NSMutableArray alloc] init] autorelease]; | |
Robert Sesek
2014/06/11 21:37:04
nit: use [NSMutableArray array], or if it does not
Pete Williamson
2014/06/11 22:12:54
Done.
| |
221 else | |
222 return [super accessibilityAttributeValue:attribute]; | |
223 } | |
210 @end | 224 @end |
211 | 225 |
212 //////////////////////////////////////////////////////////////////////////////// | 226 //////////////////////////////////////////////////////////////////////////////// |
213 | 227 |
214 @interface MCNotificationController (Private) | 228 @interface MCNotificationController (Private) |
215 // Configures a NSBox to be borderless, titleless, and otherwise appearance- | 229 // Configures a NSBox to be borderless, titleless, and otherwise appearance- |
216 // free. | 230 // free. |
217 - (void)configureCustomBox:(NSBox*)box; | 231 - (void)configureCustomBox:(NSBox*)box; |
218 | 232 |
219 // Initializes the icon_ ivar and returns the view to insert into the hierarchy. | 233 // Initializes the icon_ ivar and returns the view to insert into the hierarchy. |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
290 message_center::kNotificationBackgroundColor)]; | 304 message_center::kNotificationBackgroundColor)]; |
291 [self setView:rootView]; | 305 [self setView:rootView]; |
292 | 306 |
293 [rootView addSubview:[self createIconView]]; | 307 [rootView addSubview:[self createIconView]]; |
294 | 308 |
295 // Create the close button. | 309 // Create the close button. |
296 [self configureCloseButtonInFrame:rootFrame]; | 310 [self configureCloseButtonInFrame:rootFrame]; |
297 [rootView addSubview:closeButton_]; | 311 [rootView addSubview:closeButton_]; |
298 | 312 |
299 // Create the small image. | 313 // Create the small image. |
300 [self configureSmallImageInFrame:rootFrame]; | 314 [rootView addSubview:[self createSmallImageInFrame:rootFrame]]; |
301 [[self view] addSubview:smallImage_]; | |
302 | 315 |
303 NSRect contentFrame = [self currentContentRect]; | 316 NSRect contentFrame = [self currentContentRect]; |
304 | 317 |
305 // Create the title. | 318 // Create the title. |
306 [self configureTitleInFrame:contentFrame]; | 319 [self configureTitleInFrame:contentFrame]; |
307 [rootView addSubview:title_]; | 320 [rootView addSubview:title_]; |
308 | 321 |
309 // Create the message body. | 322 // Create the message body. |
310 [self configureBodyInFrame:contentFrame]; | 323 [self configureBodyInFrame:contentFrame]; |
311 [rootView addSubview:message_]; | 324 [rootView addSubview:message_]; |
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
725 [closeButton_ setAction:@selector(close:)]; | 738 [closeButton_ setAction:@selector(close:)]; |
726 [[closeButton_ cell] | 739 [[closeButton_ cell] |
727 accessibilitySetOverrideValue:NSAccessibilityCloseButtonSubrole | 740 accessibilitySetOverrideValue:NSAccessibilityCloseButtonSubrole |
728 forAttribute:NSAccessibilitySubroleAttribute]; | 741 forAttribute:NSAccessibilitySubroleAttribute]; |
729 [[closeButton_ cell] | 742 [[closeButton_ cell] |
730 accessibilitySetOverrideValue: | 743 accessibilitySetOverrideValue: |
731 l10n_util::GetNSString(IDS_APP_ACCNAME_CLOSE) | 744 l10n_util::GetNSString(IDS_APP_ACCNAME_CLOSE) |
732 forAttribute:NSAccessibilityTitleAttribute]; | 745 forAttribute:NSAccessibilityTitleAttribute]; |
733 } | 746 } |
734 | 747 |
735 - (void)configureSmallImageInFrame:(NSRect)rootFrame { | 748 - (NSView*)createSmallImageInFrame:(NSRect)rootFrame { |
736 int smallImageXOffset = | 749 int smallImageXOffset = |
737 message_center::kSmallImagePadding + message_center::kSmallImageSize; | 750 message_center::kSmallImagePadding + message_center::kSmallImageSize; |
738 NSRect smallImageFrame = | 751 NSRect smallImageFrame = |
739 NSMakeRect(NSMaxX(rootFrame) - smallImageXOffset, | 752 NSMakeRect(NSMaxX(rootFrame) - smallImageXOffset, |
740 NSMinY(rootFrame) + message_center::kSmallImagePadding, | 753 NSMinY(rootFrame) + message_center::kSmallImagePadding, |
741 message_center::kSmallImageSize, | 754 message_center::kSmallImageSize, |
742 message_center::kSmallImageSize); | 755 message_center::kSmallImageSize); |
756 | |
757 // Put the smallImage inside another box which can hide it from accessibility | |
758 // until we have some alt text to go with it. Once we have alt text, remove | |
759 // the box, and set NSAccessibilityDescriptionAttribute with it. | |
760 base::scoped_nsobject<NSBox> imageBox( | |
761 [[AccessibilityIgnoredBox alloc] initWithFrame:smallImageFrame]); | |
762 [self configureCustomBox:imageBox]; | |
763 [imageBox setAutoresizingMask:NSViewMinYMargin]; | |
743 smallImage_.reset([[NSImageView alloc] initWithFrame:smallImageFrame]); | 764 smallImage_.reset([[NSImageView alloc] initWithFrame:smallImageFrame]); |
Robert Sesek
2014/06/11 21:37:04
Is this frame still correct? Since it's no longer
Pete Williamson
2014/06/11 22:12:54
The imageBox is supposed to be the same size and p
Robert Sesek
2014/06/12 13:31:10
Unless I'm misreading the code, it's not quite the
Pete Williamson
2014/06/12 17:29:04
Ah, I see. The code I cut and pasted worked since
| |
744 [smallImage_ setImageScaling:NSImageScaleProportionallyUpOrDown]; | 765 [smallImage_ setImageScaling:NSImageScaleProportionallyUpOrDown]; |
745 [smallImage_ setAutoresizingMask:NSViewMinYMargin]; | 766 [imageBox setContentView:smallImage_]; |
767 | |
768 return imageBox.autorelease(); | |
746 } | 769 } |
747 | 770 |
748 - (void)configureTitleInFrame:(NSRect)contentFrame { | 771 - (void)configureTitleInFrame:(NSRect)contentFrame { |
749 contentFrame.size.height = 0; | 772 contentFrame.size.height = 0; |
750 title_.reset([self newLabelWithFrame:contentFrame]); | 773 title_.reset([self newLabelWithFrame:contentFrame]); |
751 [title_ setAutoresizingMask:NSViewMinYMargin]; | 774 [title_ setAutoresizingMask:NSViewMinYMargin]; |
752 [title_ setTextColor:gfx::SkColorToCalibratedNSColor( | 775 [title_ setTextColor:gfx::SkColorToCalibratedNSColor( |
753 message_center::kRegularTextColor)]; | 776 message_center::kRegularTextColor)]; |
754 [title_ setFont:[NSFont messageFontOfSize:message_center::kTitleFontSize]]; | 777 [title_ setFont:[NSFont messageFontOfSize:message_center::kTitleFontSize]]; |
755 } | 778 } |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
846 forFont:(NSFont*)nsfont | 869 forFont:(NSFont*)nsfont |
847 maxNumberOfLines:(size_t)lines { | 870 maxNumberOfLines:(size_t)lines { |
848 size_t unused; | 871 size_t unused; |
849 return [self wrapText:text | 872 return [self wrapText:text |
850 forFont:nsfont | 873 forFont:nsfont |
851 maxNumberOfLines:lines | 874 maxNumberOfLines:lines |
852 actualLines:&unused]; | 875 actualLines:&unused]; |
853 } | 876 } |
854 | 877 |
855 @end | 878 @end |
OLD | NEW |