summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/tabs/tab_strip.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/views/tabs/tab_strip.cc')
-rw-r--r--chrome/browser/views/tabs/tab_strip.cc13
1 files changed, 12 insertions, 1 deletions
diff --git a/chrome/browser/views/tabs/tab_strip.cc b/chrome/browser/views/tabs/tab_strip.cc
index 9e99b5d..4bfcf2f 100644
--- a/chrome/browser/views/tabs/tab_strip.cc
+++ b/chrome/browser/views/tabs/tab_strip.cc
@@ -672,6 +672,10 @@ void TabStrip::Layout() {
// - animation completion
if (active_animation_.get())
active_animation_->Stop();
+
+ // Reset the reserved tab width on resize in case a layout was left pending.
+ available_width_for_tabs_ = -1;
+
GenerateIdealBounds();
int tab_count = GetTabCount();
int tab_right = 0;
@@ -1472,7 +1476,14 @@ void TabStrip::StartResizeLayoutAnimation() {
void TabStrip::StartInsertTabAnimation(int index) {
// Don't shock users by letting all tabs move when they are focused
// on the tab-strip. Wait for later, when they aren't looking.
- int last_tab_index = GetTabCount() - 2;
+
+ // To compute the required size of the tab-strip we need to get
+ // the last already inserted tab, so if we are inserting the last
+ // one, back off by one.
+ int last_tab_index = GetTabCount() - 1;
+ if (last_tab_index == index)
+ --last_tab_index;
+
if (last_tab_index > 0) {
Tab* last_tab = GetTabAt(last_tab_index);
available_width_for_tabs_ = std::min(