Chromium Code Reviews| Index: chrome/browser/ui/views/toolbar/app_menu.cc |
| diff --git a/chrome/browser/ui/views/toolbar/app_menu.cc b/chrome/browser/ui/views/toolbar/app_menu.cc |
| index 916ebad4a9e117c7c565961293ed9e35dcf448b2..4b0acbcbd5a9efa41888e3ff7e7f0e3bd3393ec2 100644 |
| --- a/chrome/browser/ui/views/toolbar/app_menu.cc |
| +++ b/chrome/browser/ui/views/toolbar/app_menu.cc |
| @@ -46,6 +46,7 @@ |
| #include "third_party/skia/include/core/SkPaint.h" |
| #include "ui/base/l10n/l10n_util.h" |
| #include "ui/base/layout.h" |
| +#include "ui/base/material_design/material_design_controller.h" |
| #include "ui/base/resource/resource_bundle.h" |
| #include "ui/gfx/canvas.h" |
| #include "ui/gfx/font_list.h" |
| @@ -163,12 +164,13 @@ class InMenuButtonBackground : public views::Background { |
| // Normal buttons get a border drawn on the right side and the rest gets |
| // filled in. The left button however does not get a line to combine |
| // buttons. |
| + gfx::Rect bounds(view->GetLocalBounds()); |
| if (type_ != RIGHT_BUTTON) { |
| canvas->FillRect(gfx::Rect(0, 0, 1, h), |
| BorderColor(view, views::Button::STATE_NORMAL)); |
| + bounds.Inset(gfx::Insets(0, 1, 0, 0)); |
| } |
| - gfx::Rect bounds(view->GetLocalBounds()); |
| bounds.set_x(view->GetMirroredXForRect(bounds)); |
| DrawBackground(canvas, view, bounds, state); |
| } |
| @@ -213,11 +215,16 @@ class InMenuButtonBackground : public views::Background { |
| views::Button::ButtonState state) const { |
| if (state == views::Button::STATE_HOVERED || |
| state == views::Button::STATE_PRESSED) { |
| + ui::NativeTheme::ExtraParams params; |
| + if (ui::MaterialDesignController::IsModeMaterial() && |
| + view->GetClassName() == views::MenuButton::kViewClassName) { |
|
sky
2016/02/23 20:11:13
I'm not a fan of using the class name as a replace
varkha
2016/02/23 21:01:39
I will look if this is possible.
varkha
2016/02/24 01:42:21
Done.
|
| + // Consistent with a hover corner radius (kInkDropSmallCornerRadius). |
| + const int kBackgroundCornerRadius = 2; |
| + params.menu_item.corner_radius = kBackgroundCornerRadius; |
| + } |
| view->GetNativeTheme()->Paint(canvas->sk_canvas(), |
| ui::NativeTheme::kMenuItemBackground, |
| - ui::NativeTheme::kHovered, |
| - bounds, |
| - ui::NativeTheme::ExtraParams()); |
| + ui::NativeTheme::kHovered, bounds, params); |
| } |
| } |
| @@ -1137,11 +1144,21 @@ void AppMenu::PopulateMenu(MenuItemView* parent, MenuModel* model) { |
| case IDC_EXTENSIONS_OVERFLOW_MENU: { |
| scoped_ptr<ExtensionToolbarMenuView> extension_toolbar( |
| new ExtensionToolbarMenuView(browser_, this)); |
| - extension_toolbar_ = extension_toolbar.get(); |
| - if (extension_toolbar->ShouldShow()) |
| - item->AddChildView(extension_toolbar.release()); |
| - else |
| + if (!extension_toolbar->ShouldShow()) { |
| item->SetVisible(false); |
| + extension_toolbar_ = nullptr; |
| + break; |
| + } |
| + if (ui::MaterialDesignController::IsModeMaterial()) { |
| + for (int i = 0; i < extension_toolbar->contents()->child_count(); |
| + ++i) { |
| + View* action_view = extension_toolbar->contents()->child_at(i); |
| + action_view->set_background(new InMenuButtonBackground( |
| + InMenuButtonBackground::RIGHT_BUTTON)); |
| + } |
| + } |
| + extension_toolbar_ = extension_toolbar.get(); |
| + item->AddChildView(extension_toolbar.release()); |
| break; |
| } |