OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/ui/views/tabs/tab_strip.h" | 5 #include "chrome/browser/ui/views/tabs/tab_strip.h" |
6 | 6 |
7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
8 #include <windowsx.h> | 8 #include <windowsx.h> |
9 #endif | 9 #endif |
10 | 10 |
11 #include <algorithm> | 11 #include <algorithm> |
12 #include <iterator> | 12 #include <iterator> |
13 #include <string> | 13 #include <string> |
14 #include <vector> | 14 #include <vector> |
15 | 15 |
| 16 #include "base/command_line.h" |
16 #include "base/compiler_specific.h" | 17 #include "base/compiler_specific.h" |
17 #include "base/metrics/histogram.h" | 18 #include "base/metrics/histogram.h" |
18 #include "base/stl_util.h" | 19 #include "base/stl_util.h" |
19 #include "base/strings/utf_string_conversions.h" | 20 #include "base/strings/utf_string_conversions.h" |
20 #include "chrome/browser/defaults.h" | 21 #include "chrome/browser/defaults.h" |
21 #include "chrome/browser/ui/host_desktop.h" | 22 #include "chrome/browser/ui/host_desktop.h" |
22 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 23 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
23 #include "chrome/browser/ui/view_ids.h" | 24 #include "chrome/browser/ui/view_ids.h" |
24 #include "chrome/browser/ui/views/tabs/stacked_tab_strip_layout.h" | 25 #include "chrome/browser/ui/views/tabs/stacked_tab_strip_layout.h" |
25 #include "chrome/browser/ui/views/tabs/tab.h" | 26 #include "chrome/browser/ui/views/tabs/tab.h" |
26 #include "chrome/browser/ui/views/tabs/tab_drag_controller.h" | 27 #include "chrome/browser/ui/views/tabs/tab_drag_controller.h" |
27 #include "chrome/browser/ui/views/tabs/tab_strip_controller.h" | 28 #include "chrome/browser/ui/views/tabs/tab_strip_controller.h" |
28 #include "chrome/browser/ui/views/tabs/tab_strip_observer.h" | 29 #include "chrome/browser/ui/views/tabs/tab_strip_observer.h" |
29 #include "chrome/browser/ui/views/touch_uma/touch_uma.h" | 30 #include "chrome/browser/ui/views/touch_uma/touch_uma.h" |
| 31 #include "chrome/common/chrome_switches.h" |
30 #include "chrome/grit/generated_resources.h" | 32 #include "chrome/grit/generated_resources.h" |
31 #include "content/public/browser/user_metrics.h" | 33 #include "content/public/browser/user_metrics.h" |
32 #include "grit/theme_resources.h" | 34 #include "grit/theme_resources.h" |
33 #include "ui/accessibility/ax_view_state.h" | 35 #include "ui/accessibility/ax_view_state.h" |
34 #include "ui/base/default_theme_provider.h" | 36 #include "ui/base/default_theme_provider.h" |
35 #include "ui/base/dragdrop/drag_drop_types.h" | 37 #include "ui/base/dragdrop/drag_drop_types.h" |
36 #include "ui/base/l10n/l10n_util.h" | 38 #include "ui/base/l10n/l10n_util.h" |
37 #include "ui/base/models/list_selection_model.h" | 39 #include "ui/base/models/list_selection_model.h" |
38 #include "ui/base/resource/resource_bundle.h" | 40 #include "ui/base/resource/resource_bundle.h" |
39 #include "ui/gfx/animation/animation_container.h" | 41 #include "ui/gfx/animation/animation_container.h" |
(...skipping 920 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
960 | 962 |
961 const ui::ListSelectionModel& TabStrip::GetSelectionModel() { | 963 const ui::ListSelectionModel& TabStrip::GetSelectionModel() { |
962 return controller_->GetSelectionModel(); | 964 return controller_->GetSelectionModel(); |
963 } | 965 } |
964 | 966 |
965 bool TabStrip::SupportsMultipleSelection() { | 967 bool TabStrip::SupportsMultipleSelection() { |
966 // TODO: currently only allow single selection in touch layout mode. | 968 // TODO: currently only allow single selection in touch layout mode. |
967 return touch_layout_ == NULL; | 969 return touch_layout_ == NULL; |
968 } | 970 } |
969 | 971 |
| 972 // TODO(tdanderson): Modify this logic and clean up related code once a |
| 973 // decision has been made on the experimental |
| 974 // flag --tab-close-buttons-hidden-with-touch. |
| 975 bool TabStrip::ShouldHideCloseButtonForInactiveTab(const Tab* tab) { |
| 976 DCHECK(!tab->IsActive()); |
| 977 |
| 978 // Do not force the close button to hide if mouse was used as |
| 979 // the last input type to interact with the tab strip. |
| 980 if (!stacked_layout_) |
| 981 return false; |
| 982 |
| 983 std::string switch_value = |
| 984 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
| 985 switches::kTabCloseButtonsHiddenWithTouch); |
| 986 int width = tab->width(); |
| 987 if (switch_value == "always" || |
| 988 (switch_value == "narrow" && width < Tab::GetStandardSize().width()) || |
| 989 (switch_value == "stacked" && width <= Tab::GetTouchWidth())) { |
| 990 return true; |
| 991 } |
| 992 |
| 993 return false; |
| 994 } |
| 995 |
970 void TabStrip::SelectTab(Tab* tab) { | 996 void TabStrip::SelectTab(Tab* tab) { |
971 int model_index = GetModelIndexOfTab(tab); | 997 int model_index = GetModelIndexOfTab(tab); |
972 if (IsValidModelIndex(model_index)) | 998 if (IsValidModelIndex(model_index)) |
973 controller_->SelectTab(model_index); | 999 controller_->SelectTab(model_index); |
974 } | 1000 } |
975 | 1001 |
976 void TabStrip::ExtendSelectionTo(Tab* tab) { | 1002 void TabStrip::ExtendSelectionTo(Tab* tab) { |
977 int model_index = GetModelIndexOfTab(tab); | 1003 int model_index = GetModelIndexOfTab(tab); |
978 if (IsValidModelIndex(model_index)) | 1004 if (IsValidModelIndex(model_index)) |
979 controller_->ExtendSelectionTo(model_index); | 1005 controller_->ExtendSelectionTo(model_index); |
(...skipping 1760 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2740 ConvertPointToViewAndGetEventHandler(this, newtab_button_, point); | 2766 ConvertPointToViewAndGetEventHandler(this, newtab_button_, point); |
2741 if (view) | 2767 if (view) |
2742 return view; | 2768 return view; |
2743 } | 2769 } |
2744 Tab* tab = FindTabForEvent(point); | 2770 Tab* tab = FindTabForEvent(point); |
2745 if (tab) | 2771 if (tab) |
2746 return ConvertPointToViewAndGetEventHandler(this, tab, point); | 2772 return ConvertPointToViewAndGetEventHandler(this, tab, point); |
2747 } | 2773 } |
2748 return this; | 2774 return this; |
2749 } | 2775 } |
OLD | NEW |