OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/views/tabs/tab_strip.h" | 5 #include "chrome/browser/views/tabs/tab_strip.h" |
6 | 6 |
7 #include "app/drag_drop_types.h" | 7 #include "app/drag_drop_types.h" |
8 #include "app/gfx/canvas.h" | 8 #include "app/gfx/canvas.h" |
9 #include "app/gfx/path.h" | 9 #include "app/gfx/path.h" |
10 #include "app/l10n_util.h" | 10 #include "app/l10n_util.h" |
(...skipping 1038 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1049 DCHECK(index >= 0 && index < GetTabCount()); | 1049 DCHECK(index >= 0 && index < GetTabCount()); |
1050 if (CanUpdateDisplay()) { | 1050 if (CanUpdateDisplay()) { |
1051 // We have "tiny tabs" if the tabs are so tiny that the unselected ones are | 1051 // We have "tiny tabs" if the tabs are so tiny that the unselected ones are |
1052 // a different size to the selected ones. | 1052 // a different size to the selected ones. |
1053 bool tiny_tabs = current_unselected_width_ != current_selected_width_; | 1053 bool tiny_tabs = current_unselected_width_ != current_selected_width_; |
1054 if (!IsAnimating() && (!resize_layout_scheduled_ || tiny_tabs)) { | 1054 if (!IsAnimating() && (!resize_layout_scheduled_ || tiny_tabs)) { |
1055 Layout(); | 1055 Layout(); |
1056 } else { | 1056 } else { |
1057 SchedulePaint(); | 1057 SchedulePaint(); |
1058 } | 1058 } |
| 1059 |
| 1060 int old_index = model_->GetIndexOfTabContents(old_contents); |
| 1061 if (old_index >= 0) |
| 1062 GetTabAt(old_index)->StopPinnedTabTitleAnimation(); |
1059 } | 1063 } |
1060 } | 1064 } |
1061 | 1065 |
1062 void TabStrip::TabMoved(TabContents* contents, int from_index, int to_index, | 1066 void TabStrip::TabMoved(TabContents* contents, int from_index, int to_index, |
1063 bool pinned_state_changed) { | 1067 bool pinned_state_changed) { |
1064 gfx::Rect start_bounds = GetIdealBounds(from_index); | 1068 gfx::Rect start_bounds = GetIdealBounds(from_index); |
1065 Tab* tab = GetTabAt(from_index); | 1069 Tab* tab = GetTabAt(from_index); |
1066 tab_data_.erase(tab_data_.begin() + from_index); | 1070 tab_data_.erase(tab_data_.begin() + from_index); |
1067 TabData data = {tab, gfx::Rect()}; | 1071 TabData data = {tab, gfx::Rect()}; |
1068 tab->set_pinned(model_->IsTabPinned(to_index)); | 1072 tab->set_pinned(model_->IsTabPinned(to_index)); |
1069 tab_data_.insert(tab_data_.begin() + to_index, data); | 1073 tab_data_.insert(tab_data_.begin() + to_index, data); |
1070 if (pinned_state_changed) { | 1074 if (pinned_state_changed) { |
1071 StartPinAndMoveTabAnimation(from_index, to_index, start_bounds); | 1075 StartPinAndMoveTabAnimation(from_index, to_index, start_bounds); |
1072 } else { | 1076 } else { |
1073 GenerateIdealBounds(); | 1077 GenerateIdealBounds(); |
1074 StartMoveTabAnimation(from_index, to_index); | 1078 StartMoveTabAnimation(from_index, to_index); |
1075 } | 1079 } |
1076 } | 1080 } |
1077 | 1081 |
1078 void TabStrip::TabChangedAt(TabContents* contents, int index, | 1082 void TabStrip::TabChangedAt(TabContents* contents, int index, |
1079 TabChangeType change_type) { | 1083 TabChangeType change_type) { |
1080 // Index is in terms of the model. Need to make sure we adjust that index in | 1084 // Index is in terms of the model. Need to make sure we adjust that index in |
1081 // case we have an animation going. | 1085 // case we have an animation going. |
1082 Tab* tab = GetTabAtAdjustForAnimation(index); | 1086 Tab* tab = GetTabAtAdjustForAnimation(index); |
1083 if (change_type == TITLE_NOT_LOADING) { | 1087 if (change_type == TITLE_NOT_LOADING) { |
1084 // TODO(sky): make this work. | 1088 if (tab->pinned() && !tab->IsSelected()) |
1085 // if (tab->is_pinned() && !tab->IsSelected()) | 1089 tab->StartPinnedTabTitleAnimation(); |
1086 // tab->StartPinnedTabTitleAnimation(); | |
1087 // We'll receive another notification of the change asynchronously. | 1090 // We'll receive another notification of the change asynchronously. |
1088 return; | 1091 return; |
1089 } | 1092 } |
1090 tab->UpdateData(contents, change_type == LOADING_ONLY); | 1093 tab->UpdateData(contents, change_type == LOADING_ONLY); |
1091 tab->UpdateFromModel(); | 1094 tab->UpdateFromModel(); |
1092 } | 1095 } |
1093 | 1096 |
1094 void TabStrip::TabPinnedStateChanged(TabContents* contents, int index) { | 1097 void TabStrip::TabPinnedStateChanged(TabContents* contents, int index) { |
1095 GetTabAt(index)->set_pinned(model_->IsTabPinned(index)); | 1098 GetTabAt(index)->set_pinned(model_->IsTabPinned(index)); |
1096 StartPinnedTabAnimation(index); | 1099 StartPinnedTabAnimation(index); |
(...skipping 890 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1987 &TabStrip::ResizeLayoutTabs), | 1990 &TabStrip::ResizeLayoutTabs), |
1988 kResizeTabsTimeMs); | 1991 kResizeTabsTimeMs); |
1989 } | 1992 } |
1990 } else { | 1993 } else { |
1991 // Mouse moved quickly out of the tab strip and then into it again, so | 1994 // Mouse moved quickly out of the tab strip and then into it again, so |
1992 // cancel the timer so that the strip doesn't move when the mouse moves | 1995 // cancel the timer so that the strip doesn't move when the mouse moves |
1993 // back over it. | 1996 // back over it. |
1994 resize_layout_factory_.RevokeAll(); | 1997 resize_layout_factory_.RevokeAll(); |
1995 } | 1998 } |
1996 } | 1999 } |
OLD | NEW |