OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/ui/cocoa/tabs/tab_strip_controller.h" | 5 #import "chrome/browser/ui/cocoa/tabs/tab_strip_controller.h" |
6 | 6 |
7 #import <QuartzCore/QuartzCore.h> | 7 #import <QuartzCore/QuartzCore.h> |
8 | 8 |
9 #include <cmath> | 9 #include <cmath> |
10 #include <limits> | 10 #include <limits> |
(...skipping 1190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1201 // something similar in |-layoutTabs| confuses the window server. | 1201 // something similar in |-layoutTabs| confuses the window server. |
1202 [newView setFrame:NSOffsetRect([newView frame], | 1202 [newView setFrame:NSOffsetRect([newView frame], |
1203 0, -[[self class] defaultTabHeight])]; | 1203 0, -[[self class] defaultTabHeight])]; |
1204 | 1204 |
1205 [self setTabTitle:newController withContents:contents->web_contents()]; | 1205 [self setTabTitle:newController withContents:contents->web_contents()]; |
1206 | 1206 |
1207 // If a tab is being inserted, we can again use the entire tab strip width | 1207 // If a tab is being inserted, we can again use the entire tab strip width |
1208 // for layout. | 1208 // for layout. |
1209 availableResizeWidth_ = kUseFullAvailableWidth; | 1209 availableResizeWidth_ = kUseFullAvailableWidth; |
1210 | 1210 |
1211 [delegate_ onInsertTabWithContents:contents->web_contents()]; | |
1212 | |
1213 // We don't need to call |-layoutTabs| if the tab will be in the foreground | 1211 // We don't need to call |-layoutTabs| if the tab will be in the foreground |
1214 // because it will get called when the new tab is selected by the tab model. | 1212 // because it will get called when the new tab is selected by the tab model. |
1215 // Whenever |-layoutTabs| is called, it'll also add the new subview. | 1213 // Whenever |-layoutTabs| is called, it'll also add the new subview. |
1216 if (!inForeground) { | 1214 if (!inForeground) { |
1217 [self layoutTabs]; | 1215 [self layoutTabs]; |
1218 } | 1216 } |
1219 | 1217 |
1220 // During normal loading, we won't yet have a favicon and we'll get | 1218 // During normal loading, we won't yet have a favicon and we'll get |
1221 // subsequent state change notifications to show the throbber, but when we're | 1219 // subsequent state change notifications to show the throbber, but when we're |
1222 // dragging a tab out into a new window, we have to put the tab's favicon | 1220 // dragging a tab out into a new window, we have to put the tab's favicon |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1299 // Simply create a new TabContentsController for |newContents| and place it | 1297 // Simply create a new TabContentsController for |newContents| and place it |
1300 // into the array, replacing |oldContents|. A ActiveTabChanged notification | 1298 // into the array, replacing |oldContents|. A ActiveTabChanged notification |
1301 // will follow, at which point we will install the new view. | 1299 // will follow, at which point we will install the new view. |
1302 scoped_nsobject<TabContentsController> newController( | 1300 scoped_nsobject<TabContentsController> newController( |
1303 [[TabContentsController alloc] | 1301 [[TabContentsController alloc] |
1304 initWithContents:newContents->web_contents()]); | 1302 initWithContents:newContents->web_contents()]); |
1305 | 1303 |
1306 // Bye bye, |oldController|. | 1304 // Bye bye, |oldController|. |
1307 [tabContentsArray_ replaceObjectAtIndex:index withObject:newController]; | 1305 [tabContentsArray_ replaceObjectAtIndex:index withObject:newController]; |
1308 | 1306 |
1309 [delegate_ onReplaceTabWithContents:newContents->web_contents()]; | |
1310 | |
1311 // Fake a tab changed notification to force tab titles and favicons to update. | 1307 // Fake a tab changed notification to force tab titles and favicons to update. |
1312 [self tabChangedWithContents:newContents | 1308 [self tabChangedWithContents:newContents |
1313 atIndex:modelIndex | 1309 atIndex:modelIndex |
1314 changeType:TabStripModelObserver::ALL]; | 1310 changeType:TabStripModelObserver::ALL]; |
1315 } | 1311 } |
1316 | 1312 |
1317 // Remove all knowledge about this tab and its associated controller, and remove | 1313 // Remove all knowledge about this tab and its associated controller, and remove |
1318 // the view from the strip. | 1314 // the view from the strip. |
1319 - (void)removeTab:(TabController*)controller { | 1315 - (void)removeTab:(TabController*)controller { |
1320 // Cancel any pending tab transition. | 1316 // Cancel any pending tab transition. |
(...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2111 NSView* GetSheetParentViewForWebContents(WebContents* web_contents) { | 2107 NSView* GetSheetParentViewForWebContents(WebContents* web_contents) { |
2112 // View hierarchy of the contents view: | 2108 // View hierarchy of the contents view: |
2113 // NSView -- switchView, same for all tabs | 2109 // NSView -- switchView, same for all tabs |
2114 // +- NSView -- TabContentsController's view | 2110 // +- NSView -- TabContentsController's view |
2115 // +- TabContentsViewCocoa | 2111 // +- TabContentsViewCocoa |
2116 // | 2112 // |
2117 // Changing it? Do not forget to modify | 2113 // Changing it? Do not forget to modify |
2118 // -[TabStripController swapInTabAtIndex:] too. | 2114 // -[TabStripController swapInTabAtIndex:] too. |
2119 return [web_contents->GetNativeView() superview]; | 2115 return [web_contents->GetNativeView() superview]; |
2120 } | 2116 } |
OLD | NEW |