| 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 "base/strings/sys_string_conversions.h" | 7 #include "base/strings/sys_string_conversions.h" |
| 8 #include "grit/ui_resources.h" | 8 #include "grit/ui_resources.h" |
| 9 #include "skia/ext/skia_utils_mac.h" | 9 #include "skia/ext/skia_utils_mac.h" |
| 10 #import "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h" | 10 #import "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 // Create the title. | 72 // Create the title. |
| 73 [self configureTitleInFrame:rootFrame]; | 73 [self configureTitleInFrame:rootFrame]; |
| 74 [rootView addSubview:title_]; | 74 [rootView addSubview:title_]; |
| 75 | 75 |
| 76 // Create the message body. | 76 // Create the message body. |
| 77 [self configureBodyInFrame:rootFrame maxY:NSMinY([title_ frame])]; | 77 [self configureBodyInFrame:rootFrame maxY:NSMinY([title_ frame])]; |
| 78 [rootView addSubview:message_]; | 78 [rootView addSubview:message_]; |
| 79 | 79 |
| 80 // In this basic notification UI, the message body is the bottom-most | 80 // In this basic notification UI, the message body is the bottom-most |
| 81 // vertical element. If it is out of the rootView's bounds, resize the view. | 81 // vertical element. If it is out of the rootView's bounds, resize the view. |
| 82 if (NSMinY([message_ frame]) < message_center::kTextTopPadding) { | 82 if (NSMinY([message_ frame]) < message_center::kTextTopPadding - 6) { |
| 83 rootFrame.size.height += message_center::kTextTopPadding - | 83 rootFrame.size.height += message_center::kTextTopPadding - 6 - |
| 84 NSMinY([message_ frame]); | 84 NSMinY([message_ frame]); |
| 85 } | 85 } |
| 86 | 86 |
| 87 [rootView setFrame:rootFrame]; | 87 [rootView setFrame:rootFrame]; |
| 88 } | 88 } |
| 89 | 89 |
| 90 - (void)close:(id)sender { | 90 - (void)close:(id)sender { |
| 91 observer_->OnRemoveNotification(notification_->id(), /*by_user=*/true); | 91 observer_->OnRemoveNotification(notification_->id(), /*by_user=*/true); |
| 92 } | 92 } |
| 93 | 93 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 NSRect frame = [self currentContentRect]; | 152 NSRect frame = [self currentContentRect]; |
| 153 | 153 |
| 154 title_.reset([self newLabelWithFrame:NSMakeRect(0, 0, NSWidth(frame), 0)]); | 154 title_.reset([self newLabelWithFrame:NSMakeRect(0, 0, NSWidth(frame), 0)]); |
| 155 [title_ setAutoresizingMask:NSViewMinYMargin]; | 155 [title_ setAutoresizingMask:NSViewMinYMargin]; |
| 156 [title_ setStringValue:base::SysUTF16ToNSString(notification_->title())]; | 156 [title_ setStringValue:base::SysUTF16ToNSString(notification_->title())]; |
| 157 [title_ setFont:[NSFont messageFontOfSize:message_center::kTitleFontSize]]; | 157 [title_ setFont:[NSFont messageFontOfSize:message_center::kTitleFontSize]]; |
| 158 | 158 |
| 159 CGFloat delta = | 159 CGFloat delta = |
| 160 [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:title_]; | 160 [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:title_]; |
| 161 frame.size.height = delta; | 161 frame.size.height = delta; |
| 162 frame.origin.y = NSMaxY(rootFrame) - message_center::kTextTopPadding - delta; | 162 frame.origin.y = NSMaxY(rootFrame) - message_center::kTextTopPadding - 6 - |
| 163 delta; |
| 163 [title_ setFrame:frame]; | 164 [title_ setFrame:frame]; |
| 164 } | 165 } |
| 165 | 166 |
| 166 - (void)configureBodyInFrame:(NSRect)rootFrame maxY:(CGFloat)maxY { | 167 - (void)configureBodyInFrame:(NSRect)rootFrame maxY:(CGFloat)maxY { |
| 167 NSRect frame = [self currentContentRect]; | 168 NSRect frame = [self currentContentRect]; |
| 168 | 169 |
| 169 message_.reset([self newLabelWithFrame:NSMakeRect(0, 0, NSWidth(frame), 0)]); | 170 message_.reset([self newLabelWithFrame:NSMakeRect(0, 0, NSWidth(frame), 0)]); |
| 170 [message_ setAutoresizingMask:NSViewMinYMargin]; | 171 [message_ setAutoresizingMask:NSViewMinYMargin]; |
| 171 [message_ setStringValue:base::SysUTF16ToNSString(notification_->message())]; | 172 [message_ setStringValue:base::SysUTF16ToNSString(notification_->message())]; |
| 172 [message_ setFont: | 173 [message_ setFont: |
| 173 [NSFont messageFontOfSize:message_center::kMessageFontSize]]; | 174 [NSFont messageFontOfSize:message_center::kMessageFontSize]]; |
| 174 | 175 |
| 175 CGFloat delta = | 176 CGFloat delta = |
| 176 [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:message_]; | 177 [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:message_]; |
| 177 frame.size.height = delta; | 178 frame.size.height = delta; |
| 178 frame.origin.y = maxY - message_center::kTextTopPadding - delta; | 179 frame.origin.y = maxY - message_center::kTextTopPadding - 6 - delta; |
| 179 [message_ setFrame:frame]; | 180 [message_ setFrame:frame]; |
| 180 } | 181 } |
| 181 | 182 |
| 182 - (NSTextField*)newLabelWithFrame:(NSRect)frame { | 183 - (NSTextField*)newLabelWithFrame:(NSRect)frame { |
| 183 NSTextField* label = [[NSTextField alloc] initWithFrame:frame]; | 184 NSTextField* label = [[NSTextField alloc] initWithFrame:frame]; |
| 184 [label setDrawsBackground:NO]; | 185 [label setDrawsBackground:NO]; |
| 185 [label setBezeled:NO]; | 186 [label setBezeled:NO]; |
| 186 [label setEditable:NO]; | 187 [label setEditable:NO]; |
| 187 [label setSelectable:NO]; | 188 [label setSelectable:NO]; |
| 188 [label setTextColor:gfx::SkColorToCalibratedNSColor( | 189 [label setTextColor:gfx::SkColorToCalibratedNSColor( |
| 189 message_center::kRegularTextColor)]; | 190 message_center::kRegularTextColor)]; |
| 190 return label; | 191 return label; |
| 191 } | 192 } |
| 192 | 193 |
| 193 - (NSRect)currentContentRect { | 194 - (NSRect)currentContentRect { |
| 194 DCHECK(icon_); | 195 DCHECK(icon_); |
| 195 DCHECK(closeButton_); | 196 DCHECK(closeButton_); |
| 196 | 197 |
| 197 NSRect iconFrame, contentFrame; | 198 NSRect iconFrame, contentFrame; |
| 198 NSDivideRect([[self view] bounds], &iconFrame, &contentFrame, | 199 NSDivideRect([[self view] bounds], &iconFrame, &contentFrame, |
| 199 NSWidth([icon_ frame]) + message_center::kIconToTextPadding, | 200 NSWidth([icon_ frame]) + message_center::kIconToTextPadding, |
| 200 NSMinXEdge); | 201 NSMinXEdge); |
| 201 contentFrame.size.width -= NSWidth([closeButton_ frame]); | 202 contentFrame.size.width -= NSWidth([closeButton_ frame]); |
| 202 return contentFrame; | 203 return contentFrame; |
| 203 } | 204 } |
| 204 | 205 |
| 205 @end | 206 @end |
| OLD | NEW |