Chromium Code Reviews| Index: chrome/browser/tabs/tab_strip_model.cc |
| diff --git a/chrome/browser/tabs/tab_strip_model.cc b/chrome/browser/tabs/tab_strip_model.cc |
| index d1ded2fb870b424509045ebb4b63ded573a3a98a..4ec94b13618b2d8486fb72c84ca5259d2c70be03 100644 |
| --- a/chrome/browser/tabs/tab_strip_model.cc |
| +++ b/chrome/browser/tabs/tab_strip_model.cc |
| @@ -569,8 +569,11 @@ int TabStripModel::ConstrainInsertionIndex(int index, bool mini_tab) { |
| void TabStripModel::ExtendSelectionTo(int index) { |
| DCHECK(ContainsIndex(index)); |
| int old_active = active_index(); |
| + std::vector<int> old_selected_indices( |
|
James Hawkins
2011/05/18 18:03:10
nit: You use indices here and indexes in the Notif
dpapad
2011/06/01 18:05:41
Done.
|
| + selection_model().selected_indices()); |
| selection_model_.SetSelectionFromAnchorTo(index); |
| // This may not have resulted in a change, but we assume it did. |
| + NotifyMultipleSelectionChanged(old_selected_indices); |
| NotifySelectionChanged(old_active); |
| } |
| @@ -1235,6 +1238,20 @@ void TabStripModel::NotifySelectionChanged(int old_selected_index) { |
| TabSelectedAt(old_tab, new_tab, active_index(), true)); |
| } |
| +void TabStripModel::NotifyMultipleSelectionChanged( |
| + const std::vector<int>& old_selected_indices) { |
| + std::set<int> indices_affected; |
| + size_t i = 0; |
| + for (i = 0; i < old_selected_indices.size(); i++) { |
| + if (old_selected_indices[i] != TabStripSelectionModel::kUnselectedIndex) |
| + indices_affected.insert(old_selected_indices[i]); |
| + } |
| + for (i = 0; i < selection_model().selected_indices().size(); i++) |
| + indices_affected.insert(selection_model().selected_indices()[i]); |
| + FOR_EACH_OBSERVER(TabStripModelObserver, observers_, |
| + TabSelectionChanged(indices_affected)); |
| +} |
| + |
| void TabStripModel::SelectRelativeTab(bool next) { |
| // This may happen during automated testing or if a user somehow buffers |
| // many key accelerators. |