Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(212)

Side by Side Diff: chrome/browser/cocoa/tab_strip_controller.mm

Issue 2821011: Removes phantom tabs. (Closed)
Patch Set: Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #import "chrome/browser/cocoa/tab_strip_controller.h" 5 #import "chrome/browser/cocoa/tab_strip_controller.h"
6 6
7 #import <QuartzCore/QuartzCore.h> 7 #import <QuartzCore/QuartzCore.h>
8 8
9 #include <limits> 9 #include <limits>
10 #include <string> 10 #include <string>
(...skipping 923 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 if (oldContents) { 934 if (oldContents) {
935 int oldModelIndex = 935 int oldModelIndex =
936 browser_->GetIndexOfController(&(oldContents->controller())); 936 browser_->GetIndexOfController(&(oldContents->controller()));
937 if (oldModelIndex != -1) { // When closing a tab, the old tab may be gone. 937 if (oldModelIndex != -1) { // When closing a tab, the old tab may be gone.
938 NSInteger oldIndex = [self indexFromModelIndex:oldModelIndex]; 938 NSInteger oldIndex = [self indexFromModelIndex:oldModelIndex];
939 TabContentsController* oldController = 939 TabContentsController* oldController =
940 [tabContentsArray_ objectAtIndex:oldIndex]; 940 [tabContentsArray_ objectAtIndex:oldIndex];
941 [oldController willBecomeUnselectedTab]; 941 [oldController willBecomeUnselectedTab];
942 oldContents->view()->StoreFocus(); 942 oldContents->view()->StoreFocus();
943 oldContents->WasHidden(); 943 oldContents->WasHidden();
944 // If the selection changed because the tab was made phantom, update the
945 // Cocoa side of the state.
946 TabController* tabController = [tabArray_ objectAtIndex:oldIndex];
947 [tabController setPhantom:tabStripModel_->IsPhantomTab(oldModelIndex)];
948 } 944 }
949 } 945 }
950 946
951 // De-select all other tabs and select the new tab. 947 // De-select all other tabs and select the new tab.
952 int i = 0; 948 int i = 0;
953 for (TabController* current in tabArray_.get()) { 949 for (TabController* current in tabArray_.get()) {
954 [current setSelected:(i == index) ? YES : NO]; 950 [current setSelected:(i == index) ? YES : NO];
955 ++i; 951 ++i;
956 } 952 }
957 953
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
1124 retain]; 1120 retain];
1125 static NSImage* sadFaviconImage = 1121 static NSImage* sadFaviconImage =
1126 [ResourceBundle::GetSharedInstance().GetNSImageNamed(IDR_SAD_FAVICON) 1122 [ResourceBundle::GetSharedInstance().GetNSImageNamed(IDR_SAD_FAVICON)
1127 retain]; 1123 retain];
1128 1124
1129 // Take closing tabs into account. 1125 // Take closing tabs into account.
1130 NSInteger index = [self indexFromModelIndex:modelIndex]; 1126 NSInteger index = [self indexFromModelIndex:modelIndex];
1131 1127
1132 TabController* tabController = [tabArray_ objectAtIndex:index]; 1128 TabController* tabController = [tabArray_ objectAtIndex:index];
1133 1129
1134 // Since the tab is loading, it cannot be phantom any more.
1135 if ([tabController phantom]) {
1136 [tabController setPhantom:NO];
1137 [[tabController view] setNeedsDisplay:YES];
1138 }
1139
1140 bool oldHasIcon = [tabController iconView] != nil; 1130 bool oldHasIcon = [tabController iconView] != nil;
1141 bool newHasIcon = contents->ShouldDisplayFavIcon() || 1131 bool newHasIcon = contents->ShouldDisplayFavIcon() ||
1142 tabStripModel_->IsMiniTab(modelIndex); // Always show icon if mini. 1132 tabStripModel_->IsMiniTab(modelIndex); // Always show icon if mini.
1143 1133
1144 TabLoadingState oldState = [tabController loadingState]; 1134 TabLoadingState oldState = [tabController loadingState];
1145 TabLoadingState newState = kTabDone; 1135 TabLoadingState newState = kTabDone;
1146 NSImage* throbberImage = nil; 1136 NSImage* throbberImage = nil;
1147 if (contents->is_crashed()) { 1137 if (contents->is_crashed()) {
1148 newState = kTabCrashed; 1138 newState = kTabCrashed;
1149 newHasIcon = true; 1139 newHasIcon = true;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 // TODO(sky): make this work. 1188 // TODO(sky): make this work.
1199 // We'll receive another notification of the change asynchronously. 1189 // We'll receive another notification of the change asynchronously.
1200 return; 1190 return;
1201 } 1191 }
1202 1192
1203 TabController* tabController = [tabArray_ objectAtIndex:index]; 1193 TabController* tabController = [tabArray_ objectAtIndex:index];
1204 1194
1205 if (change != TabStripModelObserver::LOADING_ONLY) 1195 if (change != TabStripModelObserver::LOADING_ONLY)
1206 [self setTabTitle:tabController withContents:contents]; 1196 [self setTabTitle:tabController withContents:contents];
1207 1197
1208 // See if the change was to/from phantom.
1209 bool isPhantom = tabStripModel_->IsPhantomTab(modelIndex);
1210 if (isPhantom != [tabController phantom])
1211 [tabController setPhantom:isPhantom];
1212
1213 [self updateFavIconForContents:contents atIndex:modelIndex]; 1198 [self updateFavIconForContents:contents atIndex:modelIndex];
1214 1199
1215 TabContentsController* updatedController = 1200 TabContentsController* updatedController =
1216 [tabContentsArray_ objectAtIndex:index]; 1201 [tabContentsArray_ objectAtIndex:index];
1217 [updatedController tabDidChange:contents]; 1202 [updatedController tabDidChange:contents];
1218 } 1203 }
1219 1204
1220 // Called when a tab is moved (usually by drag&drop). Keep our parallel arrays 1205 // Called when a tab is moved (usually by drag&drop). Keep our parallel arrays
1221 // in sync with the tab strip model. It can also be pinned/unpinned 1206 // in sync with the tab strip model. It can also be pinned/unpinned
1222 // simultaneously, so we need to take care of that. 1207 // simultaneously, so we need to take care of that.
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after
1740 return; 1725 return;
1741 1726
1742 TabContentsController* tabController = 1727 TabContentsController* tabController =
1743 [tabContentsArray_ objectAtIndex:index]; 1728 [tabContentsArray_ objectAtIndex:index];
1744 TabContents* devtoolsContents = contents ? 1729 TabContents* devtoolsContents = contents ?
1745 DevToolsWindow::GetDevToolsContents(contents) : NULL; 1730 DevToolsWindow::GetDevToolsContents(contents) : NULL;
1746 [tabController showDevToolsContents:devtoolsContents]; 1731 [tabController showDevToolsContents:devtoolsContents];
1747 } 1732 }
1748 1733
1749 @end 1734 @end
OLDNEW
« no previous file with comments | « chrome/browser/cocoa/tab_controller.mm ('k') | chrome/browser/cocoa/tab_strip_model_observer_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698