OLD | NEW |
---|---|
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #include "app/l10n_util_mac.h" | 5 #include "app/l10n_util_mac.h" |
6 #include "base/mac_util.h" | 6 #include "base/mac_util.h" |
7 #import "chrome/browser/themes/browser_theme_provider.h" | 7 #import "chrome/browser/themes/browser_theme_provider.h" |
8 #import "chrome/browser/ui/cocoa/menu_controller.h" | 8 #import "chrome/browser/ui/cocoa/menu_controller.h" |
9 #import "chrome/browser/ui/cocoa/tab_controller.h" | 9 #import "chrome/browser/ui/cocoa/tab_controller.h" |
10 #import "chrome/browser/ui/cocoa/tab_controller_target.h" | 10 #import "chrome/browser/ui/cocoa/tab_controller_target.h" |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
107 | 107 |
108 // Called when the tab's nib is done loading and all outlets are hooked up. | 108 // Called when the tab's nib is done loading and all outlets are hooked up. |
109 - (void)awakeFromNib { | 109 - (void)awakeFromNib { |
110 // Remember the icon's frame, so that if the icon is ever removed, a new | 110 // Remember the icon's frame, so that if the icon is ever removed, a new |
111 // one can later replace it in the proper location. | 111 // one can later replace it in the proper location. |
112 originalIconFrame_ = [iconView_ frame]; | 112 originalIconFrame_ = [iconView_ frame]; |
113 | 113 |
114 // When the icon is removed, the title expands to the left to fill the space | 114 // When the icon is removed, the title expands to the left to fill the space |
115 // left by the icon. When the close button is removed, the title expands to | 115 // left by the icon. When the close button is removed, the title expands to |
116 // the right to fill its space. These are the amounts to expand and contract | 116 // the right to fill its space. These are the amounts to expand and contract |
117 // titleView_ under those conditions. | 117 // titleView_ under those conditions. We don't have to explicilty save the |
118 // offset between the title and the close button since we can just get that | |
119 // value for the close button's frame. | |
118 NSRect titleFrame = [titleView_ frame]; | 120 NSRect titleFrame = [titleView_ frame]; |
119 iconTitleXOffset_ = NSMinX(titleFrame) - NSMinX(originalIconFrame_); | 121 iconTitleXOffset_ = NSMinX(titleFrame) - NSMinX(originalIconFrame_); |
120 titleCloseWidthOffset_ = NSMaxX([closeButton_ frame]) - NSMaxX(titleFrame); | |
121 | 122 |
122 [self internalSetSelected:selected_]; | 123 [self internalSetSelected:selected_]; |
123 } | 124 } |
124 | 125 |
125 // Called when Cocoa wants to display the context menu. Lazily instantiate | 126 // Called when Cocoa wants to display the context menu. Lazily instantiate |
126 // the menu based off of the cross-platform model. Re-create the menu and | 127 // the menu based off of the cross-platform model. Re-create the menu and |
127 // model every time to get the correct labels and enabling. | 128 // model every time to get the correct labels and enabling. |
128 - (NSMenu*)menu { | 129 - (NSMenu*)menu { |
129 contextMenuDelegate_.reset( | 130 contextMenuDelegate_.reset( |
130 new TabControllerInternal::MenuDelegate(target_, self)); | 131 new TabControllerInternal::MenuDelegate(target_, self)); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
219 } | 220 } |
220 | 221 |
221 // Returns YES if we should be showing the close button. The selected tab | 222 // Returns YES if we should be showing the close button. The selected tab |
222 // always shows the close button. | 223 // always shows the close button. |
223 - (BOOL)shouldShowCloseButton { | 224 - (BOOL)shouldShowCloseButton { |
224 if ([self mini]) | 225 if ([self mini]) |
225 return NO; | 226 return NO; |
226 return ([self selected] || [self iconCapacity] >= 3); | 227 return ([self selected] || [self iconCapacity] >= 3); |
227 } | 228 } |
228 | 229 |
230 - (NSTextField*)titleView { | |
231 return titleView_; | |
232 } | |
233 | |
234 - (HoverCloseButton*)closeButton { | |
235 return closeButton_; | |
236 } | |
237 | |
229 - (void)updateVisibility { | 238 - (void)updateVisibility { |
230 // iconView_ may have been replaced or it may be nil, so [iconView_ isHidden] | 239 // iconView_ may have been replaced or it may be nil, so [iconView_ isHidden] |
231 // won't work. Instead, the state of the icon is tracked separately in | 240 // won't work. Instead, the state of the icon is tracked separately in |
232 // isIconShowing_. | 241 // isIconShowing_. |
233 BOOL oldShowIcon = isIconShowing_ ? YES : NO; | |
234 BOOL newShowIcon = [self shouldShowIcon] ? YES : NO; | 242 BOOL newShowIcon = [self shouldShowIcon] ? YES : NO; |
viettrungluu
2010/12/14 00:19:50
The |? YES : NO| here is just strange. Could you g
sail
2010/12/14 01:59:53
Done.
| |
235 | 243 |
236 [iconView_ setHidden:newShowIcon ? NO : YES]; | 244 [iconView_ setHidden:newShowIcon ? NO : YES]; |
viettrungluu
2010/12/14 00:19:50
Ditto. Should just be |!newShowIcon|.
sail
2010/12/14 01:59:53
Done.
| |
237 isIconShowing_ = newShowIcon; | 245 isIconShowing_ = newShowIcon; |
238 | 246 |
239 // If the tab is a mini-tab, hide the title. | 247 // If the tab is a mini-tab, hide the title. |
240 [titleView_ setHidden:[self mini]]; | 248 [titleView_ setHidden:[self mini]]; |
241 | 249 |
242 BOOL oldShowCloseButton = [closeButton_ isHidden] ? NO : YES; | |
243 BOOL newShowCloseButton = [self shouldShowCloseButton] ? YES : NO; | 250 BOOL newShowCloseButton = [self shouldShowCloseButton] ? YES : NO; |
viettrungluu
2010/12/14 00:19:50
Etc.
sail
2010/12/14 01:59:53
Done.
| |
244 | 251 |
245 [closeButton_ setHidden:newShowCloseButton ? NO : YES]; | 252 [closeButton_ setHidden:newShowCloseButton ? NO : YES]; |
246 | 253 |
247 // Adjust the title view based on changes to the icon's and close button's | 254 // Adjust the title view based on changes to the icon's and close button's |
248 // visibility. | 255 // visibility. |
249 NSRect titleFrame = [titleView_ frame]; | 256 NSRect oldTitleFrame = [titleView_ frame]; |
257 NSRect newTitleFrame; | |
258 newTitleFrame.size.height = oldTitleFrame.size.height; | |
viettrungluu
2010/12/14 00:19:50
NSMakeRect and a couple of uses of ?: would be mor
sail
2010/12/14 01:59:53
Unfortunately I need a temporary variable here sin
| |
259 newTitleFrame.origin.y = oldTitleFrame.origin.y; | |
250 | 260 |
251 if (oldShowIcon != newShowIcon) { | 261 if (newShowIcon) { |
252 // Adjust the left edge of the title view according to the presence or | 262 newTitleFrame.origin.x = originalIconFrame_.origin.x + iconTitleXOffset_; |
253 // absence of the icon view. | 263 } else { |
254 | 264 newTitleFrame.origin.x = originalIconFrame_.origin.x; |
255 if (newShowIcon) { | |
256 titleFrame.origin.x += iconTitleXOffset_; | |
257 titleFrame.size.width -= iconTitleXOffset_; | |
258 } else { | |
259 titleFrame.origin.x -= iconTitleXOffset_; | |
260 titleFrame.size.width += iconTitleXOffset_; | |
261 } | |
262 } | 265 } |
263 | 266 |
264 if (oldShowCloseButton != newShowCloseButton) { | 267 if (newShowCloseButton) { |
265 // Adjust the right edge of the title view according to the presence or | 268 newTitleFrame.size.width = NSMinX([closeButton_ frame]) - |
266 // absence of the close button. | 269 NSMinX(newTitleFrame); |
viettrungluu
2010/12/14 00:19:50
Presumably you may want to calculate the x-coordin
sail
2010/12/14 01:59:53
Done.
| |
267 if (newShowCloseButton) | 270 } else { |
268 titleFrame.size.width -= titleCloseWidthOffset_; | 271 newTitleFrame.size.width = NSMaxX([closeButton_ frame]) - |
269 else | 272 NSMinX(newTitleFrame); |
viettrungluu
2010/12/14 00:19:50
"
sail
2010/12/14 01:59:53
Done.
| |
270 titleFrame.size.width += titleCloseWidthOffset_; | |
271 } | 273 } |
272 | 274 |
273 [titleView_ setFrame:titleFrame]; | 275 [titleView_ setFrame:newTitleFrame]; |
274 } | 276 } |
275 | 277 |
276 - (void)updateTitleColor { | 278 - (void)updateTitleColor { |
277 NSColor* titleColor = nil; | 279 NSColor* titleColor = nil; |
278 ThemeProvider* theme = [[[self view] window] themeProvider]; | 280 ThemeProvider* theme = [[[self view] window] themeProvider]; |
279 if (theme && ![self selected]) { | 281 if (theme && ![self selected]) { |
280 titleColor = | 282 titleColor = |
281 theme->GetNSColor(BrowserThemeProvider::COLOR_BACKGROUND_TAB_TEXT, | 283 theme->GetNSColor(BrowserThemeProvider::COLOR_BACKGROUND_TAB_TEXT, |
282 true); | 284 true); |
283 } | 285 } |
(...skipping 20 matching lines...) Expand all Loading... | |
304 // Called by the tabs to determine whether we are in rapid (tab) closure mode. | 306 // Called by the tabs to determine whether we are in rapid (tab) closure mode. |
305 - (BOOL)inRapidClosureMode { | 307 - (BOOL)inRapidClosureMode { |
306 if ([[self target] respondsToSelector:@selector(inRapidClosureMode)]) { | 308 if ([[self target] respondsToSelector:@selector(inRapidClosureMode)]) { |
307 return [[self target] performSelector:@selector(inRapidClosureMode)] ? | 309 return [[self target] performSelector:@selector(inRapidClosureMode)] ? |
308 YES : NO; | 310 YES : NO; |
309 } | 311 } |
310 return NO; | 312 return NO; |
311 } | 313 } |
312 | 314 |
313 @end | 315 @end |
OLD | NEW |