| 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/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
| 9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 10 #include "chrome/browser/extensions/extension_service.h" | 10 #include "chrome/browser/extensions/extension_service.h" |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 | 51 |
| 52 namespace { | 52 namespace { |
| 53 | 53 |
| 54 // Horizontal spacing between most items in the container, as well as after the | 54 // Horizontal spacing between most items in the container, as well as after the |
| 55 // last item or chevron (if visible). | 55 // last item or chevron (if visible). |
| 56 const int kItemSpacing = ToolbarView::kStandardSpacing; | 56 const int kItemSpacing = ToolbarView::kStandardSpacing; |
| 57 | 57 |
| 58 // Horizontal spacing before the chevron (if visible). | 58 // Horizontal spacing before the chevron (if visible). |
| 59 const int kChevronSpacing = kItemSpacing - 2; | 59 const int kChevronSpacing = kItemSpacing - 2; |
| 60 | 60 |
| 61 // Padding to make sure the badge appears in the right location vertically when | |
| 62 // in overflow mode (inside the Chrome menu). | |
| 63 // TODO(devlin): Remove this hard coding and make sure the badge appears | |
| 64 // correctly. | |
| 65 const int kPaddingForBadge = 9; | |
| 66 | |
| 67 // The maximum number of icons to show per row when in overflow mode (showing | 61 // The maximum number of icons to show per row when in overflow mode (showing |
| 68 // icons in the application menu). | 62 // icons in the application menu). |
| 69 // TODO(devlin): Compute the right number of icons to show, depending on the | 63 // TODO(devlin): Compute the right number of icons to show, depending on the |
| 70 // menu width. | 64 // menu width. |
| 71 #if defined(OS_LINUX) | 65 #if defined(OS_LINUX) |
| 72 const int kIconsPerMenuRow = 8; // The menu on Linux is wider. | 66 const int kIconsPerMenuRow = 8; // The menu on Linux is wider. |
| 73 #else | 67 #else |
| 74 const int kIconsPerMenuRow = 7; | 68 const int kIconsPerMenuRow = 7; |
| 75 #endif | 69 #endif |
| 76 | 70 |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 } | 344 } |
| 351 | 345 |
| 352 for (size_t i = main_container_->VisibleBrowserActionsAfterAnimation(); | 346 for (size_t i = main_container_->VisibleBrowserActionsAfterAnimation(); |
| 353 i < browser_action_views_.size(); ++i) { | 347 i < browser_action_views_.size(); ++i) { |
| 354 BrowserActionView* view = browser_action_views_[i]; | 348 BrowserActionView* view = browser_action_views_[i]; |
| 355 size_t index = i - main_container_->VisibleBrowserActionsAfterAnimation(); | 349 size_t index = i - main_container_->VisibleBrowserActionsAfterAnimation(); |
| 356 int row_index = static_cast<int>(index) / kIconsPerMenuRow; | 350 int row_index = static_cast<int>(index) / kIconsPerMenuRow; |
| 357 int x = (index * IconWidth(true)) - | 351 int x = (index * IconWidth(true)) - |
| 358 (row_index * IconWidth(true) * kIconsPerMenuRow); | 352 (row_index * IconWidth(true) * kIconsPerMenuRow); |
| 359 gfx::Rect rect_bounds( | 353 gfx::Rect rect_bounds( |
| 360 x, | 354 x, IconHeight() * row_index, icon_width, IconHeight()); |
| 361 IconHeight() * row_index, | |
| 362 icon_width, | |
| 363 IconHeight() + kPaddingForBadge); | |
| 364 view->SetBoundsRect(rect_bounds); | 355 view->SetBoundsRect(rect_bounds); |
| 365 view->SetVisible(true); | 356 view->SetVisible(true); |
| 366 } | 357 } |
| 367 } else { | 358 } else { |
| 368 for (BrowserActionViews::const_iterator it = browser_action_views_.begin(); | 359 for (BrowserActionViews::const_iterator it = browser_action_views_.begin(); |
| 369 it < browser_action_views_.end(); ++it) { | 360 it < browser_action_views_.end(); ++it) { |
| 370 BrowserActionView* view = *it; | 361 BrowserActionView* view = *it; |
| 371 int x = ToolbarView::kStandardSpacing + | 362 int x = ToolbarView::kStandardSpacing + |
| 372 ((it - browser_action_views_.begin()) * IconWidth(true)); | 363 ((it - browser_action_views_.begin()) * IconWidth(true)); |
| 373 view->SetVisible(x + icon_width <= max_x); | 364 view->SetVisible(x + icon_width <= max_x); |
| (...skipping 679 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1053 views::BubbleBorder::TOP_RIGHT, | 1044 views::BubbleBorder::TOP_RIGHT, |
| 1054 show_action); | 1045 show_action); |
| 1055 popup_->GetWidget()->AddObserver(this); | 1046 popup_->GetWidget()->AddObserver(this); |
| 1056 popup_button_ = button; | 1047 popup_button_ = button; |
| 1057 | 1048 |
| 1058 // Only set button as pushed if it was triggered by a user click. | 1049 // Only set button as pushed if it was triggered by a user click. |
| 1059 if (should_grant) | 1050 if (should_grant) |
| 1060 popup_button_->SetButtonPushed(); | 1051 popup_button_->SetButtonPushed(); |
| 1061 return true; | 1052 return true; |
| 1062 } | 1053 } |
| OLD | NEW |