OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/toolbar/browser_actions_container.h" | 5 #include "chrome/browser/ui/views/toolbar/browser_actions_container.h" |
6 | 6 |
7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
9 #include "chrome/browser/extensions/extension_action_manager.h" | 9 #include "chrome/browser/extensions/extension_action_manager.h" |
10 #include "chrome/browser/extensions/extension_util.h" | 10 #include "chrome/browser/extensions/extension_util.h" |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 BrowserActionsContainerObserver* observer) { | 311 BrowserActionsContainerObserver* observer) { |
312 observers_.AddObserver(observer); | 312 observers_.AddObserver(observer); |
313 } | 313 } |
314 | 314 |
315 void BrowserActionsContainer::RemoveObserver( | 315 void BrowserActionsContainer::RemoveObserver( |
316 BrowserActionsContainerObserver* observer) { | 316 BrowserActionsContainerObserver* observer) { |
317 observers_.RemoveObserver(observer); | 317 observers_.RemoveObserver(observer); |
318 } | 318 } |
319 | 319 |
320 gfx::Size BrowserActionsContainer::GetPreferredSize() const { | 320 gfx::Size BrowserActionsContainer::GetPreferredSize() const { |
321 size_t icon_count = GetIconCount(); | 321 // Note: We can't use GetIconCount() for the main bar, since we may also |
| 322 // have to include items that are in the chevron's overflow. |
| 323 size_t icon_count = |
| 324 in_overflow_mode() ? GetIconCount() : browser_action_views_.size(); |
322 | 325 |
323 // If there are no actions to show, or we are in overflow mode and the main | 326 // If there are no actions to show, or we are in overflow mode and the main |
324 // container is already showing them all, then no further work is required. | 327 // container is already showing them all, then no further work is required. |
325 if (icon_count == 0) | 328 if (icon_count == 0) |
326 return gfx::Size(); | 329 return gfx::Size(); |
327 | 330 |
328 if (in_overflow_mode()) { | 331 if (in_overflow_mode()) { |
329 // When in overflow, y is multiline, so the pixel count is IconHeight() | 332 // When in overflow, y is multiline, so the pixel count is IconHeight() |
330 // times the number of rows needed. | 333 // times the number of rows needed. |
331 return gfx::Size( | 334 return gfx::Size( |
(...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1097 size_t absolute_model_size = | 1100 size_t absolute_model_size = |
1098 model_size == -1 ? extensions.size() : model_size; | 1101 model_size == -1 ? extensions.size() : model_size; |
1099 | 1102 |
1100 // The main container will try to show |model_size| icons, but reduce if there | 1103 // The main container will try to show |model_size| icons, but reduce if there |
1101 // aren't enough displayable icons to do so. | 1104 // aren't enough displayable icons to do so. |
1102 size_t main_displayed = std::min(displayable_icon_count, absolute_model_size); | 1105 size_t main_displayed = std::min(displayable_icon_count, absolute_model_size); |
1103 // The overflow will display the extras, if any. | 1106 // The overflow will display the extras, if any. |
1104 return in_overflow_mode() ? | 1107 return in_overflow_mode() ? |
1105 displayable_icon_count - main_displayed : main_displayed; | 1108 displayable_icon_count - main_displayed : main_displayed; |
1106 } | 1109 } |
OLD | NEW |