| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/toolbar/toolbar_actions_bar.h" | 5 #include "chrome/browser/ui/toolbar/toolbar_actions_bar.h" |
| 6 | 6 |
| 7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
| 8 #include "base/location.h" | 8 #include "base/location.h" |
| 9 #include "base/profiler/scoped_tracker.h" | 9 #include "base/profiler/scoped_tracker.h" |
| 10 #include "base/single_thread_task_runner.h" | 10 #include "base/single_thread_task_runner.h" |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 available_space -= delegate_->GetChevronWidth(); | 220 available_space -= delegate_->GetChevronWidth(); |
| 221 | 221 |
| 222 // Now we add an extra between-item padding value so the space can be divided | 222 // Now we add an extra between-item padding value so the space can be divided |
| 223 // evenly by (size of icon with padding). | 223 // evenly by (size of icon with padding). |
| 224 return static_cast<size_t>(std::max( | 224 return static_cast<size_t>(std::max( |
| 225 0, available_space + platform_settings_.item_spacing) / IconWidth(true)); | 225 0, available_space + platform_settings_.item_spacing) / IconWidth(true)); |
| 226 } | 226 } |
| 227 | 227 |
| 228 size_t ToolbarActionsBar::GetIconCount() const { | 228 size_t ToolbarActionsBar::GetIconCount() const { |
| 229 if (!model_) | 229 if (!model_) |
| 230 return 0u; | 230 return 0; |
| 231 | 231 |
| 232 int pop_out_modifier = 0; | 232 int pop_out_modifier = 0; |
| 233 // If there is a popped out action, it could affect the number of visible | 233 // If there is a popped out action, it could affect the number of visible |
| 234 // icons - but only if it wouldn't otherwise be visible. | 234 // icons - but only if it wouldn't otherwise be visible. |
| 235 if (popped_out_action_) { | 235 if (popped_out_action_) { |
| 236 size_t popped_out_index = | 236 size_t popped_out_index = |
| 237 std::find(toolbar_actions_.begin(), | 237 std::find(toolbar_actions_.begin(), |
| 238 toolbar_actions_.end(), | 238 toolbar_actions_.end(), |
| 239 popped_out_action_) - toolbar_actions_.begin(); | 239 popped_out_action_) - toolbar_actions_.begin(); |
| 240 pop_out_modifier = popped_out_index >= model_->visible_icon_count() ? 1 : 0; | 240 pop_out_modifier = popped_out_index >= model_->visible_icon_count() ? 1 : 0; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 257 if (!toolbar_actions_.empty() && !suppress_layout_ && | 257 if (!toolbar_actions_.empty() && !suppress_layout_ && |
| 258 model_->actions_initialized()) { | 258 model_->actions_initialized()) { |
| 259 DCHECK_LE(visible_icons, toolbar_actions_.size()); | 259 DCHECK_LE(visible_icons, toolbar_actions_.size()); |
| 260 DCHECK_EQ(model_->toolbar_items().size(), toolbar_actions_.size()); | 260 DCHECK_EQ(model_->toolbar_items().size(), toolbar_actions_.size()); |
| 261 } | 261 } |
| 262 #endif | 262 #endif |
| 263 | 263 |
| 264 return visible_icons; | 264 return visible_icons; |
| 265 } | 265 } |
| 266 | 266 |
| 267 gfx::Rect ToolbarActionsBar::GetFrameForIndex(size_t index) const { | 267 size_t ToolbarActionsBar::GetStartIndexInBounds() const { |
| 268 size_t start_index = in_overflow_mode() ? | 268 return in_overflow_mode() ? main_bar_->GetEndIndexInBounds() : 0; |
| 269 toolbar_actions_.size() - GetIconCount() : 0u; | 269 } |
| 270 |
| 271 size_t ToolbarActionsBar::GetEndIndexInBounds() const { |
| 272 return in_overflow_mode() ? |
| 273 toolbar_actions_.size() : WidthToIconCount(delegate_->GetWidth()); |
| 274 } |
| 275 |
| 276 bool ToolbarActionsBar::NeedsOverflow() const { |
| 277 DCHECK(!in_overflow_mode()); |
| 278 return GetEndIndexInBounds() != toolbar_actions_.size(); |
| 279 } |
| 280 |
| 281 gfx::Rect ToolbarActionsBar::GetFrameForIndex( |
| 282 size_t index) const { |
| 283 size_t start_index = GetStartIndexInBounds(); |
| 270 | 284 |
| 271 // If the index is for an action that is before range we show (i.e., is for | 285 // If the index is for an action that is before range we show (i.e., is for |
| 272 // a button that's on the main bar, and this is the overflow), send back an | 286 // a button that's on the main bar, and this is the overflow), send back an |
| 273 // empty rect. | 287 // empty rect. |
| 274 if (index < start_index) | 288 if (index < start_index) |
| 275 return gfx::Rect(); | 289 return gfx::Rect(); |
| 276 | 290 |
| 277 size_t relative_index = index - start_index; | 291 size_t relative_index = index - start_index; |
| 278 int icons_per_overflow_row = platform_settings().icons_per_overflow_menu_row; | 292 int icons_per_overflow_row = platform_settings().icons_per_overflow_menu_row; |
| 279 size_t row_index = in_overflow_mode() ? | 293 size_t row_index = in_overflow_mode() ? |
| (...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 707 for (ToolbarActionViewController* action : toolbar_actions_) { | 721 for (ToolbarActionViewController* action : toolbar_actions_) { |
| 708 if (action->GetId() == action_id) | 722 if (action->GetId() == action_id) |
| 709 return action; | 723 return action; |
| 710 } | 724 } |
| 711 return nullptr; | 725 return nullptr; |
| 712 } | 726 } |
| 713 | 727 |
| 714 content::WebContents* ToolbarActionsBar::GetCurrentWebContents() { | 728 content::WebContents* ToolbarActionsBar::GetCurrentWebContents() { |
| 715 return browser_->tab_strip_model()->GetActiveWebContents(); | 729 return browser_->tab_strip_model()->GetActiveWebContents(); |
| 716 } | 730 } |
| OLD | NEW |