| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/gtk/tabs/tab_strip_gtk.h" | 5 #include "chrome/browser/gtk/tabs/tab_strip_gtk.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "app/gtk_dnd_util.h" | 9 #include "app/gtk_dnd_util.h" |
| 10 #include "app/resource_bundle.h" | 10 #include "app/resource_bundle.h" |
| (...skipping 943 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 954 } | 954 } |
| 955 } | 955 } |
| 956 | 956 |
| 957 if (!tab) | 957 if (!tab) |
| 958 tab = new TabGtk(this); | 958 tab = new TabGtk(this); |
| 959 | 959 |
| 960 // Only insert if we're not already in the list. | 960 // Only insert if we're not already in the list. |
| 961 if (!contains_tab) { | 961 if (!contains_tab) { |
| 962 TabData d = { tab, gfx::Rect() }; | 962 TabData d = { tab, gfx::Rect() }; |
| 963 tab_data_.insert(tab_data_.begin() + index, d); | 963 tab_data_.insert(tab_data_.begin() + index, d); |
| 964 tab->UpdateData(contents, model_->IsPhantomTab(index), false); | 964 tab->UpdateData(contents, false); |
| 965 } | 965 } |
| 966 tab->set_mini(model_->IsMiniTab(index)); | 966 tab->set_mini(model_->IsMiniTab(index)); |
| 967 tab->SetBlocked(model_->IsTabBlocked(index)); | 967 tab->SetBlocked(model_->IsTabBlocked(index)); |
| 968 | 968 |
| 969 if (gtk_widget_get_parent(tab->widget()) != tabstrip_.get()) | 969 if (gtk_widget_get_parent(tab->widget()) != tabstrip_.get()) |
| 970 gtk_fixed_put(GTK_FIXED(tabstrip_.get()), tab->widget(), 0, 0); | 970 gtk_fixed_put(GTK_FIXED(tabstrip_.get()), tab->widget(), 0, 0); |
| 971 | 971 |
| 972 // Don't animate the first tab; it looks weird. | 972 // Don't animate the first tab; it looks weird. |
| 973 if (GetTabCount() > 1) { | 973 if (GetTabCount() > 1) { |
| 974 StartInsertTabAnimation(index); | 974 StartInsertTabAnimation(index); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1014 void TabStripGtk::TabMoved(TabContents* contents, | 1014 void TabStripGtk::TabMoved(TabContents* contents, |
| 1015 int from_index, | 1015 int from_index, |
| 1016 int to_index) { | 1016 int to_index) { |
| 1017 gfx::Rect start_bounds = GetIdealBounds(from_index); | 1017 gfx::Rect start_bounds = GetIdealBounds(from_index); |
| 1018 TabGtk* tab = GetTabAt(from_index); | 1018 TabGtk* tab = GetTabAt(from_index); |
| 1019 tab_data_.erase(tab_data_.begin() + from_index); | 1019 tab_data_.erase(tab_data_.begin() + from_index); |
| 1020 TabData data = {tab, gfx::Rect()}; | 1020 TabData data = {tab, gfx::Rect()}; |
| 1021 tab->set_mini(model_->IsMiniTab(to_index)); | 1021 tab->set_mini(model_->IsMiniTab(to_index)); |
| 1022 tab->SetBlocked(model_->IsTabBlocked(to_index)); | 1022 tab->SetBlocked(model_->IsTabBlocked(to_index)); |
| 1023 tab_data_.insert(tab_data_.begin() + to_index, data); | 1023 tab_data_.insert(tab_data_.begin() + to_index, data); |
| 1024 if (tab->phantom() != model_->IsPhantomTab(to_index)) | |
| 1025 tab->set_phantom(!tab->phantom()); | |
| 1026 GenerateIdealBounds(); | 1024 GenerateIdealBounds(); |
| 1027 StartMoveTabAnimation(from_index, to_index); | 1025 StartMoveTabAnimation(from_index, to_index); |
| 1028 } | 1026 } |
| 1029 | 1027 |
| 1030 void TabStripGtk::TabChangedAt(TabContents* contents, int index, | 1028 void TabStripGtk::TabChangedAt(TabContents* contents, int index, |
| 1031 TabChangeType change_type) { | 1029 TabChangeType change_type) { |
| 1032 // Index is in terms of the model. Need to make sure we adjust that index in | 1030 // Index is in terms of the model. Need to make sure we adjust that index in |
| 1033 // case we have an animation going. | 1031 // case we have an animation going. |
| 1034 TabGtk* tab = GetTabAtAdjustForAnimation(index); | 1032 TabGtk* tab = GetTabAtAdjustForAnimation(index); |
| 1035 if (change_type == TITLE_NOT_LOADING) { | 1033 if (change_type == TITLE_NOT_LOADING) { |
| 1036 if (tab->mini() && !tab->IsSelected()) | 1034 if (tab->mini() && !tab->IsSelected()) |
| 1037 tab->StartMiniTabTitleAnimation(); | 1035 tab->StartMiniTabTitleAnimation(); |
| 1038 // We'll receive another notification of the change asynchronously. | 1036 // We'll receive another notification of the change asynchronously. |
| 1039 return; | 1037 return; |
| 1040 } | 1038 } |
| 1041 tab->UpdateData(contents, model_->IsPhantomTab(index), | 1039 tab->UpdateData(contents, change_type == LOADING_ONLY); |
| 1042 change_type == LOADING_ONLY); | |
| 1043 tab->UpdateFromModel(); | 1040 tab->UpdateFromModel(); |
| 1044 } | 1041 } |
| 1045 | 1042 |
| 1046 void TabStripGtk::TabReplacedAt(TabContents* old_contents, | |
| 1047 TabContents* new_contents, | |
| 1048 int index) { | |
| 1049 TabChangedAt(new_contents, index, ALL); | |
| 1050 } | |
| 1051 | |
| 1052 void TabStripGtk::TabMiniStateChanged(TabContents* contents, int index) { | 1043 void TabStripGtk::TabMiniStateChanged(TabContents* contents, int index) { |
| 1053 GetTabAt(index)->set_mini(model_->IsMiniTab(index)); | 1044 GetTabAt(index)->set_mini(model_->IsMiniTab(index)); |
| 1054 // Don't animate if the window isn't visible yet. The window won't be visible | 1045 // Don't animate if the window isn't visible yet. The window won't be visible |
| 1055 // when dragging a mini-tab to a new window. | 1046 // when dragging a mini-tab to a new window. |
| 1056 if (window_ && window_->window() && | 1047 if (window_ && window_->window() && |
| 1057 GTK_WIDGET_VISIBLE(GTK_WIDGET(window_->window()))) { | 1048 GTK_WIDGET_VISIBLE(GTK_WIDGET(window_->window()))) { |
| 1058 StartMiniTabAnimation(index); | 1049 StartMiniTabAnimation(index); |
| 1059 } else { | 1050 } else { |
| 1060 Layout(); | 1051 Layout(); |
| 1061 } | 1052 } |
| (...skipping 971 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2033 | 2024 |
| 2034 // Let the middle mouse button initiate clicks as well. | 2025 // Let the middle mouse button initiate clicks as well. |
| 2035 gtk_util::SetButtonTriggersNavigation(button->widget()); | 2026 gtk_util::SetButtonTriggersNavigation(button->widget()); |
| 2036 g_signal_connect(button->widget(), "clicked", | 2027 g_signal_connect(button->widget(), "clicked", |
| 2037 G_CALLBACK(OnNewTabClickedThunk), this); | 2028 G_CALLBACK(OnNewTabClickedThunk), this); |
| 2038 GTK_WIDGET_UNSET_FLAGS(button->widget(), GTK_CAN_FOCUS); | 2029 GTK_WIDGET_UNSET_FLAGS(button->widget(), GTK_CAN_FOCUS); |
| 2039 gtk_fixed_put(GTK_FIXED(tabstrip_.get()), button->widget(), 0, 0); | 2030 gtk_fixed_put(GTK_FIXED(tabstrip_.get()), button->widget(), 0, 0); |
| 2040 | 2031 |
| 2041 return button; | 2032 return button; |
| 2042 } | 2033 } |
| OLD | NEW |