Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
| 6 | 6 |
| 7 #include "base/logging.h" // for NOTREACHED() | 7 #include "base/logging.h" // for NOTREACHED() |
| 8 #include "base/mac/mac_util.h" | 8 #include "base/mac/mac_util.h" |
| 9 #include "base/sys_string_conversions.h" | 9 #include "base/sys_string_conversions.h" |
| 10 #include "chrome/browser/tab_contents/confirm_infobar_delegate.h" | 10 #include "chrome/browser/tab_contents/confirm_infobar_delegate.h" |
| 11 #include "chrome/browser/tab_contents/link_infobar_delegate.h" | 11 #include "chrome/browser/tab_contents/link_infobar_delegate.h" |
| 12 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 12 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| 13 #import "chrome/browser/ui/cocoa/animatable_view.h" | 13 #import "chrome/browser/ui/cocoa/animatable_view.h" |
| 14 #import "chrome/browser/ui/cocoa/browser_window_controller.h" | 14 #import "chrome/browser/ui/cocoa/browser_window_controller.h" |
| 15 #include "chrome/browser/ui/cocoa/event_utils.h" | 15 #include "chrome/browser/ui/cocoa/event_utils.h" |
| 16 #include "chrome/browser/ui/cocoa/infobars/infobar.h" | 16 #include "chrome/browser/ui/cocoa/infobars/infobar.h" |
| 17 #import "chrome/browser/ui/cocoa/infobars/infobar_container_controller.h" | 17 #import "chrome/browser/ui/cocoa/infobars/infobar_container_controller.h" |
| 18 #import "chrome/browser/ui/cocoa/infobars/infobar_controller.h" | 18 #import "chrome/browser/ui/cocoa/infobars/infobar_controller.h" |
| 19 #import "chrome/browser/ui/cocoa/infobars/infobar_gradient_view.h" | 19 #import "chrome/browser/ui/cocoa/infobars/infobar_gradient_view.h" |
| 20 #import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h" | 20 #import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h" |
| 21 #include "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h" | 21 #include "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h" |
| 22 #include "ui/gfx/image/image.h" | 22 #include "ui/gfx/image/image.h" |
| 23 #include "webkit/glue/window_open_disposition.h" | 23 #include "webkit/glue/window_open_disposition.h" |
| 24 | 24 |
| 25 namespace { | 25 namespace { |
| 26 // Durations set to match the default SlideAnimation duration. | 26 // Durations set to match the default SlideAnimation duration. |
| 27 const float kAnimateOpenDuration = 0.12; | 27 const float kAnimateOpenDuration = 0.12; |
| 28 const float kAnimateCloseDuration = 0.12; | 28 const float kAnimateCloseDuration = 0.12; |
| 29 | |
| 30 // The baseline shift for text in the NSTextView. | |
| 31 const float kTextBaselineShift = -1.0; | |
| 29 } | 32 } |
| 30 | 33 |
| 31 // This simple subclass of |NSTextView| just doesn't show the (text) cursor | 34 // This simple subclass of |NSTextView| just doesn't show the (text) cursor |
| 32 // (|NSTextView| displays the cursor with full keyboard accessibility enabled). | 35 // (|NSTextView| displays the cursor with full keyboard accessibility enabled). |
| 33 @interface InfoBarTextView : NSTextView | 36 @interface InfoBarTextView : NSTextView |
| 34 - (void)fixupCursor; | 37 - (void)fixupCursor; |
| 35 @end | 38 @end |
| 36 | 39 |
| 37 @implementation InfoBarTextView | 40 @implementation InfoBarTextView |
| 38 | 41 |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 226 } | 229 } |
| 227 | 230 |
| 228 - (void)setLabelToMessage:(NSString*)message { | 231 - (void)setLabelToMessage:(NSString*)message { |
| 229 NSMutableDictionary* attributes = [NSMutableDictionary dictionary]; | 232 NSMutableDictionary* attributes = [NSMutableDictionary dictionary]; |
| 230 NSFont* font = [NSFont labelFontOfSize: | 233 NSFont* font = [NSFont labelFontOfSize: |
| 231 [NSFont systemFontSizeForControlSize:NSRegularControlSize]]; | 234 [NSFont systemFontSizeForControlSize:NSRegularControlSize]]; |
| 232 [attributes setObject:font | 235 [attributes setObject:font |
| 233 forKey:NSFontAttributeName]; | 236 forKey:NSFontAttributeName]; |
| 234 [attributes setObject:[NSCursor arrowCursor] | 237 [attributes setObject:[NSCursor arrowCursor] |
| 235 forKey:NSCursorAttributeName]; | 238 forKey:NSCursorAttributeName]; |
| 239 [attributes setObject:[NSNumber numberWithFloat:kTextBaselineShift] | |
| 240 forKey:NSBaselineOffsetAttributeName]; | |
| 236 scoped_nsobject<NSAttributedString> attributedString( | 241 scoped_nsobject<NSAttributedString> attributedString( |
| 237 [[NSAttributedString alloc] initWithString:message | 242 [[NSAttributedString alloc] initWithString:message |
| 238 attributes:attributes]); | 243 attributes:attributes]); |
| 239 [[label_.get() textStorage] setAttributedString:attributedString]; | 244 [[label_.get() textStorage] setAttributedString:attributedString]; |
| 240 } | 245 } |
| 241 | 246 |
| 242 - (void)removeButtons { | 247 - (void)removeButtons { |
| 243 // Extend the label all the way across. | 248 // Extend the label all the way across. |
| 244 NSRect labelFrame = [label_.get() frame]; | 249 NSRect labelFrame = [label_.get() frame]; |
| 245 labelFrame.size.width = NSMaxX([cancelButton_ frame]) - NSMinX(labelFrame); | 250 labelFrame.size.width = NSMaxX([cancelButton_ frame]) - NSMinX(labelFrame); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 314 - (void)setLabelToMessage:(NSString*)message | 319 - (void)setLabelToMessage:(NSString*)message |
| 315 withLink:(NSString*)link | 320 withLink:(NSString*)link |
| 316 atOffset:(NSUInteger)linkOffset { | 321 atOffset:(NSUInteger)linkOffset { |
| 317 if (linkOffset == std::wstring::npos) { | 322 if (linkOffset == std::wstring::npos) { |
| 318 // linkOffset == std::wstring::npos means the link should be right-aligned, | 323 // linkOffset == std::wstring::npos means the link should be right-aligned, |
| 319 // which is not supported on Mac (http://crbug.com/47728). | 324 // which is not supported on Mac (http://crbug.com/47728). |
| 320 NOTIMPLEMENTED(); | 325 NOTIMPLEMENTED(); |
| 321 linkOffset = [message length]; | 326 linkOffset = [message length]; |
| 322 } | 327 } |
| 323 // Create an attributes dictionary for the entire message. We have | 328 // Create an attributes dictionary for the entire message. We have |
| 324 // to expicitly set the font the control's font. We also override | 329 // to expicitly set the control's font. We also override the cursor to give |
|
rohitrao (ping after 24h)
2011/08/09 17:10:09
While you're here, s/expicitly/explicitly/
Robert Sesek
2011/08/09 17:48:33
Done.
| |
| 325 // the cursor to give us the normal cursor rather than the text | 330 // us the normal cursor rather than the text insertion cursor. |
| 326 // insertion cursor. | |
| 327 NSMutableDictionary* linkAttributes = [NSMutableDictionary dictionary]; | 331 NSMutableDictionary* linkAttributes = [NSMutableDictionary dictionary]; |
| 328 [linkAttributes setObject:[NSCursor arrowCursor] | 332 [linkAttributes setObject:[NSCursor arrowCursor] |
| 329 forKey:NSCursorAttributeName]; | 333 forKey:NSCursorAttributeName]; |
| 330 NSFont* font = [NSFont labelFontOfSize: | 334 NSFont* font = [NSFont labelFontOfSize: |
| 331 [NSFont systemFontSizeForControlSize:NSRegularControlSize]]; | 335 [NSFont systemFontSizeForControlSize:NSRegularControlSize]]; |
| 332 [linkAttributes setObject:font | 336 [linkAttributes setObject:font |
| 333 forKey:NSFontAttributeName]; | 337 forKey:NSFontAttributeName]; |
| 334 | 338 |
| 335 // Create the attributed string for the main message text. | 339 // Create the attributed string for the main message text. |
| 336 scoped_nsobject<NSMutableAttributedString> infoText( | 340 scoped_nsobject<NSMutableAttributedString> infoText( |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 349 forKey:NSUnderlineStyleAttributeName]; | 353 forKey:NSUnderlineStyleAttributeName]; |
| 350 [linkAttributes setObject:[NSString string] // dummy value | 354 [linkAttributes setObject:[NSString string] // dummy value |
| 351 forKey:NSLinkAttributeName]; | 355 forKey:NSLinkAttributeName]; |
| 352 | 356 |
| 353 // Insert the link text into the string at the appropriate offset. | 357 // Insert the link text into the string at the appropriate offset. |
| 354 scoped_nsobject<NSAttributedString> attributedString( | 358 scoped_nsobject<NSAttributedString> attributedString( |
| 355 [[NSAttributedString alloc] initWithString:link | 359 [[NSAttributedString alloc] initWithString:link |
| 356 attributes:linkAttributes]); | 360 attributes:linkAttributes]); |
| 357 [infoText.get() insertAttributedString:attributedString.get() | 361 [infoText.get() insertAttributedString:attributedString.get() |
| 358 atIndex:linkOffset]; | 362 atIndex:linkOffset]; |
| 363 // The entire text needs a baseline shift. | |
| 364 [infoText addAttribute:NSBaselineOffsetAttributeName | |
| 365 value:[NSNumber numberWithDouble:kTextBaselineShift] | |
| 366 range:NSMakeRange(0, [infoText length])]; | |
| 367 | |
| 359 // Update the label view with the new text. | 368 // Update the label view with the new text. |
| 360 [[label_.get() textStorage] setAttributedString:infoText]; | 369 [[label_.get() textStorage] setAttributedString:infoText]; |
| 361 } | 370 } |
| 362 | 371 |
| 363 - (NSPoint)pointForTipApex { | 372 - (NSPoint)pointForTipApex { |
| 364 BrowserWindowController* windowController = | 373 BrowserWindowController* windowController = |
| 365 [containerController_ browserWindowController]; | 374 [containerController_ browserWindowController]; |
| 366 if (!windowController) { | 375 if (!windowController) { |
| 367 // This should only happen in unit tests. | 376 // This should only happen in unit tests. |
| 368 return NSZeroPoint; | 377 return NSZeroPoint; |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 553 LinkInfoBarController* controller = | 562 LinkInfoBarController* controller = |
| 554 [[LinkInfoBarController alloc] initWithDelegate:this owner:owner]; | 563 [[LinkInfoBarController alloc] initWithDelegate:this owner:owner]; |
| 555 return new InfoBar(controller, this); | 564 return new InfoBar(controller, this); |
| 556 } | 565 } |
| 557 | 566 |
| 558 InfoBar* ConfirmInfoBarDelegate::CreateInfoBar(TabContentsWrapper* owner) { | 567 InfoBar* ConfirmInfoBarDelegate::CreateInfoBar(TabContentsWrapper* owner) { |
| 559 ConfirmInfoBarController* controller = | 568 ConfirmInfoBarController* controller = |
| 560 [[ConfirmInfoBarController alloc] initWithDelegate:this owner:owner]; | 569 [[ConfirmInfoBarController alloc] initWithDelegate:this owner:owner]; |
| 561 return new InfoBar(controller, this); | 570 return new InfoBar(controller, this); |
| 562 } | 571 } |
| OLD | NEW |