| Index: ash/common/system/tray/system_menu_button.cc
|
| diff --git a/ash/common/system/tray/system_menu_button.cc b/ash/common/system/tray/system_menu_button.cc
|
| index 091441920a39416251d0b0b576246d3372959d50..5931b24ecf99bf9a96afd8bb4b431b79d91e120a 100644
|
| --- a/ash/common/system/tray/system_menu_button.cc
|
| +++ b/ash/common/system/tray/system_menu_button.cc
|
| @@ -11,15 +11,17 @@
|
| #include "ui/gfx/paint_vector_icon.h"
|
| #include "ui/views/animation/flood_fill_ink_drop_ripple.h"
|
| #include "ui/views/animation/ink_drop_highlight.h"
|
| +#include "ui/views/animation/square_ink_drop_ripple.h"
|
| #include "ui/views/border.h"
|
| #include "ui/views/painter.h"
|
|
|
| namespace ash {
|
|
|
| SystemMenuButton::SystemMenuButton(views::ButtonListener* listener,
|
| + InkDropStyle ink_drop_style,
|
| const gfx::VectorIcon& icon,
|
| int accessible_name_id)
|
| - : views::ImageButton(listener) {
|
| + : views::ImageButton(listener), ink_drop_style_(ink_drop_style) {
|
| gfx::ImageSkia image = gfx::CreateVectorIcon(icon, kMenuIconColor);
|
| SetImage(views::Button::STATE_NORMAL, &image);
|
| gfx::ImageSkia disabled_image =
|
| @@ -40,27 +42,68 @@ SystemMenuButton::SystemMenuButton(views::ButtonListener* listener,
|
| SetFocusPainter(views::Painter::CreateSolidFocusPainter(
|
| kFocusBorderColor, gfx::Insets(1, 1, 1, 1)));
|
|
|
| - SetInkDropMode(InkDropMode::ON_NO_GESTURE_HANDLER);
|
| + SetInkDropMode(InkDropMode::ON);
|
| set_has_ink_drop_action_on_click(true);
|
| - set_ink_drop_base_color(SK_ColorBLACK);
|
| + set_ink_drop_base_color(kTrayPopupInkDropBaseColor);
|
| + set_ink_drop_visible_opacity(kTrayPopupInkDropRippleOpacity);
|
| }
|
|
|
| SystemMenuButton::~SystemMenuButton() {}
|
|
|
| std::unique_ptr<views::InkDropRipple> SystemMenuButton::CreateInkDropRipple()
|
| const {
|
| - return base::MakeUnique<views::FloodFillInkDropRipple>(
|
| - GetLocalBounds(), GetInkDropCenterBasedOnLastEvent(),
|
| - GetInkDropBaseColor(), ink_drop_visible_opacity());
|
| + const gfx::Size size = GetInkDropSize();
|
| + switch (ink_drop_style_) {
|
| + case InkDropStyle::SQUARE:
|
| + return base::MakeUnique<views::SquareInkDropRipple>(
|
| + size, size.width() / 2, size, size.width() / 2,
|
| + GetInkDropCenterBasedOnLastEvent(), GetLocalBounds().CenterPoint(),
|
| + GetInkDropBaseColor(), ink_drop_visible_opacity());
|
| + case InkDropStyle::FLOOD_FILL:
|
| + gfx::Rect bounds = GetLocalBounds();
|
| + bounds.Inset(kTrayPopupInkDropInset, kTrayPopupInkDropInset);
|
| + return base::MakeUnique<views::FloodFillInkDropRipple>(
|
| + bounds, GetInkDropCenterBasedOnLastEvent(), GetInkDropBaseColor(),
|
| + ink_drop_visible_opacity());
|
| + }
|
| + // Required for some compilers.
|
| + NOTREACHED();
|
| + return nullptr;
|
| }
|
|
|
| std::unique_ptr<views::InkDropHighlight>
|
| SystemMenuButton::CreateInkDropHighlight() const {
|
| - return nullptr;
|
| + // TODO(bruthig): Show the highlight when the ink drop is active. (See
|
| + // crbug.com/649734)
|
| + if (!ShouldShowInkDropHighlight())
|
| + return nullptr;
|
| +
|
| + int highlight_radius = 0;
|
| + switch (ink_drop_style_) {
|
| + case InkDropStyle::SQUARE:
|
| + highlight_radius = GetInkDropSize().width() / 2;
|
| + break;
|
| + case InkDropStyle::FLOOD_FILL:
|
| + highlight_radius = 0;
|
| + break;
|
| + }
|
| +
|
| + std::unique_ptr<views::InkDropHighlight> highlight(
|
| + new views::InkDropHighlight(GetInkDropSize(), highlight_radius,
|
| + gfx::RectF(GetLocalBounds()).CenterPoint(),
|
| + GetInkDropBaseColor()));
|
| + highlight->set_visible_opacity(kTrayPopupInkDropHighlightOpacity);
|
| + return highlight;
|
| }
|
|
|
| -bool SystemMenuButton::ShouldShowInkDropForFocus() const {
|
| +bool SystemMenuButton::ShouldShowInkDropHighlight() const {
|
| return false;
|
| }
|
|
|
| +gfx::Size SystemMenuButton::GetInkDropSize() const {
|
| + gfx::Rect bounds = GetLocalBounds();
|
| + bounds.Inset(kTrayPopupInkDropInset, kTrayPopupInkDropInset);
|
| + return bounds.size();
|
| +}
|
| +
|
| } // namespace ash
|
|
|