Index: chrome/browser/ui/views/tabs/tab_strip.cc |
diff --git a/chrome/browser/ui/views/tabs/tab_strip.cc b/chrome/browser/ui/views/tabs/tab_strip.cc |
index d247063328835b97950ce89904ce08aa43b63e66..d5819310958eb61822cb812647c6792a49363b93 100644 |
--- a/chrome/browser/ui/views/tabs/tab_strip.cc |
+++ b/chrome/browser/ui/views/tabs/tab_strip.cc |
@@ -235,7 +235,8 @@ void TabStrip::RemoveTabAt(int model_index) { |
StartRemoveTabAnimation(model_index); |
} |
-void TabStrip::SelectTabAt(int old_model_index, int new_model_index) { |
+void TabStrip::SetSelection(const TabStripSelectionModel& old_selection, |
+ const TabStripSelectionModel& new_selection) { |
// We have "tiny tabs" if the tabs are so tiny that the unselected ones are |
// a different size to the selected ones. |
bool tiny_tabs = current_unselected_width_ != current_selected_width_; |
@@ -245,8 +246,14 @@ void TabStrip::SelectTabAt(int old_model_index, int new_model_index) { |
SchedulePaint(); |
} |
- if (old_model_index >= 0) { |
- GetTabAtTabDataIndex(ModelIndexToTabIndex(old_model_index))-> |
+ TabStripSelectionModel::SelectedIndices no_longer_selected; |
+ std::set_difference(old_selection.selected_indices().begin(), |
+ old_selection.selected_indices().end(), |
+ new_selection.selected_indices().begin(), |
+ new_selection.selected_indices().end(), |
+ no_longer_selected.begin()); |
+ for (size_t i = 0; i < no_longer_selected.size(); ++i) { |
+ GetTabAtTabDataIndex(ModelIndexToTabIndex(no_longer_selected[i]))-> |
StopMiniTabTitleAnimation(); |
} |
} |