| 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 #include "chrome/browser/tabs/tab_strip_model.h" | 5 #include "chrome/browser/tabs/tab_strip_model.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <map> | 8 #include <map> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 contents_data_[index]->contents = new_contents; | 175 contents_data_[index]->contents = new_contents; |
| 176 | 176 |
| 177 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, | 177 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, |
| 178 TabReplacedAt(this, old_contents, new_contents, index)); | 178 TabReplacedAt(this, old_contents, new_contents, index)); |
| 179 | 179 |
| 180 // When the active tab contents is replaced send out selected notification | 180 // When the active tab contents is replaced send out selected notification |
| 181 // too. We do this as nearly all observers need to treat a replace of the | 181 // too. We do this as nearly all observers need to treat a replace of the |
| 182 // selected contents as selection changing. | 182 // selected contents as selection changing. |
| 183 if (active_index() == index) { | 183 if (active_index() == index) { |
| 184 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, | 184 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, |
| 185 TabSelectedAt(old_contents, new_contents, active_index(), | 185 ActiveTabChanged(old_contents, new_contents, |
| 186 false)); | 186 active_index(), false)); |
| 187 } | 187 } |
| 188 return old_contents; | 188 return old_contents; |
| 189 } | 189 } |
| 190 | 190 |
| 191 void TabStripModel::ReplaceNavigationControllerAt( | 191 void TabStripModel::ReplaceNavigationControllerAt( |
| 192 int index, TabContentsWrapper* contents) { | 192 int index, TabContentsWrapper* contents) { |
| 193 // This appears to be OK with no flicker since no redraw event | 193 // This appears to be OK with no flicker since no redraw event |
| 194 // occurs between the call to add an aditional tab and one to close | 194 // occurs between the call to add an aditional tab and one to close |
| 195 // the previous tab. | 195 // the previous tab. |
| 196 InsertTabContentsAt(index + 1, contents, ADD_ACTIVE | ADD_INHERIT_GROUP); | 196 InsertTabContentsAt(index + 1, contents, ADD_ACTIVE | ADD_INHERIT_GROUP); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 247 (active_index() == TabStripSelectionModel::kUnselectedIndex) ? | 247 (active_index() == TabStripSelectionModel::kUnselectedIndex) ? |
| 248 NULL : GetSelectedTabContents(); | 248 NULL : GetSelectedTabContents(); |
| 249 selection_model_.SetSelectedIndex(index); | 249 selection_model_.SetSelectedIndex(index); |
| 250 TabContentsWrapper* new_contents = GetContentsAt(index); | 250 TabContentsWrapper* new_contents = GetContentsAt(index); |
| 251 if (old_contents != new_contents && old_contents) { | 251 if (old_contents != new_contents && old_contents) { |
| 252 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, | 252 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, |
| 253 TabDeselected(old_contents)); | 253 TabDeselected(old_contents)); |
| 254 } | 254 } |
| 255 if (old_contents != new_contents || had_multi) { | 255 if (old_contents != new_contents || had_multi) { |
| 256 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, | 256 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, |
| 257 TabSelectedAt(old_contents, new_contents, | 257 ActiveTabChanged(old_contents, new_contents, |
| 258 active_index(), user_gesture)); | 258 active_index(), user_gesture)); |
| 259 } | 259 } |
| 260 } | 260 } |
| 261 | 261 |
| 262 void TabStripModel::MoveTabContentsAt(int index, | 262 void TabStripModel::MoveTabContentsAt(int index, |
| 263 int to_position, | 263 int to_position, |
| 264 bool select_after_move) { | 264 bool select_after_move) { |
| 265 DCHECK(ContainsIndex(index)); | 265 DCHECK(ContainsIndex(index)); |
| 266 if (index == to_position) | 266 if (index == to_position) |
| 267 return; | 267 return; |
| 268 | 268 |
| (...skipping 944 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1213 if (old_contents == new_contents) | 1213 if (old_contents == new_contents) |
| 1214 return; | 1214 return; |
| 1215 | 1215 |
| 1216 TabContentsWrapper* last_selected_contents = old_contents; | 1216 TabContentsWrapper* last_selected_contents = old_contents; |
| 1217 if (last_selected_contents) { | 1217 if (last_selected_contents) { |
| 1218 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, | 1218 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, |
| 1219 TabDeselected(last_selected_contents)); | 1219 TabDeselected(last_selected_contents)); |
| 1220 } | 1220 } |
| 1221 | 1221 |
| 1222 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, | 1222 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, |
| 1223 TabSelectedAt(last_selected_contents, new_contents, | 1223 ActiveTabChanged(last_selected_contents, new_contents, |
| 1224 active_index(), user_gesture)); | 1224 active_index(), user_gesture)); |
| 1225 } | 1225 } |
| 1226 | 1226 |
| 1227 void TabStripModel::NotifySelectionChanged(int old_selected_index) { | 1227 void TabStripModel::NotifySelectionChanged(int old_selected_index) { |
| 1228 TabContentsWrapper* old_tab = | 1228 TabContentsWrapper* old_tab = |
| 1229 old_selected_index == TabStripSelectionModel::kUnselectedIndex ? | 1229 old_selected_index == TabStripSelectionModel::kUnselectedIndex ? |
| 1230 NULL : GetTabContentsAt(old_selected_index); | 1230 NULL : GetTabContentsAt(old_selected_index); |
| 1231 TabContentsWrapper* new_tab = | 1231 TabContentsWrapper* new_tab = |
| 1232 active_index() == TabStripSelectionModel::kUnselectedIndex ? | 1232 active_index() == TabStripSelectionModel::kUnselectedIndex ? |
| 1233 NULL : GetTabContentsAt(active_index()); | 1233 NULL : GetTabContentsAt(active_index()); |
| 1234 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, | 1234 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, |
| 1235 TabSelectedAt(old_tab, new_tab, active_index(), true)); | 1235 ActiveTabChanged(old_tab, new_tab, active_index(), true)); |
| 1236 } | 1236 } |
| 1237 | 1237 |
| 1238 void TabStripModel::SelectRelativeTab(bool next) { | 1238 void TabStripModel::SelectRelativeTab(bool next) { |
| 1239 // This may happen during automated testing or if a user somehow buffers | 1239 // This may happen during automated testing or if a user somehow buffers |
| 1240 // many key accelerators. | 1240 // many key accelerators. |
| 1241 if (contents_data_.empty()) | 1241 if (contents_data_.empty()) |
| 1242 return; | 1242 return; |
| 1243 | 1243 |
| 1244 int index = active_index(); | 1244 int index = active_index(); |
| 1245 int delta = next ? 1 : -1; | 1245 int delta = next ? 1 : -1; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1310 void TabStripModel::ForgetOpenersAndGroupsReferencing( | 1310 void TabStripModel::ForgetOpenersAndGroupsReferencing( |
| 1311 const NavigationController* tab) { | 1311 const NavigationController* tab) { |
| 1312 for (TabContentsDataVector::const_iterator i = contents_data_.begin(); | 1312 for (TabContentsDataVector::const_iterator i = contents_data_.begin(); |
| 1313 i != contents_data_.end(); ++i) { | 1313 i != contents_data_.end(); ++i) { |
| 1314 if ((*i)->group == tab) | 1314 if ((*i)->group == tab) |
| 1315 (*i)->group = NULL; | 1315 (*i)->group = NULL; |
| 1316 if ((*i)->opener == tab) | 1316 if ((*i)->opener == tab) |
| 1317 (*i)->opener = NULL; | 1317 (*i)->opener = NULL; |
| 1318 } | 1318 } |
| 1319 } | 1319 } |
| OLD | NEW |