| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5586d965de6d87b3fb6065fa48d6bf2cecc7cc44
|
| --- /dev/null
|
| +++ b/ash/common/system/tray/system_menu_button.cc
|
| @@ -0,0 +1,66 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "ash/common/system/tray/system_menu_button.h"
|
| +
|
| +#include "ash/common/ash_constants.h"
|
| +#include "ash/common/system/tray/system_tray.h"
|
| +#include "ash/common/system/tray/tray_constants.h"
|
| +#include "ui/base/resource/resource_bundle.h"
|
| +#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/border.h"
|
| +#include "ui/views/painter.h"
|
| +
|
| +namespace ash {
|
| +
|
| +SystemMenuButton::SystemMenuButton(views::ButtonListener* listener,
|
| + const gfx::VectorIcon& icon,
|
| + int accessible_name_id)
|
| + : views::ImageButton(listener) {
|
| + gfx::ImageSkia image = gfx::CreateVectorIcon(icon, kMenuIconColor);
|
| + SetImage(views::Button::STATE_NORMAL, &image);
|
| + const int horizontal_padding = (kMenuButtonSize - image.width()) / 2;
|
| + const int vertical_padding = (kMenuButtonSize - image.height()) / 2;
|
| + SetBorder(
|
| + views::Border::CreateEmptyBorder(vertical_padding, horizontal_padding,
|
| + vertical_padding, horizontal_padding));
|
| +
|
| + ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
|
| + SetTooltipText(bundle.GetLocalizedString(accessible_name_id));
|
| +
|
| + // TODO(tdanderson): Update the focus rect color, border thickness, and
|
| + // location for material design.
|
| + SetFocusForPlatform();
|
| + SetFocusPainter(views::Painter::CreateSolidFocusPainter(
|
| + kFocusBorderColor, gfx::Insets(1, 1, 1, 1)));
|
| +
|
| + SetInkDropMode(InkDropMode::ON_NO_GESTURE_HANDLER);
|
| + set_has_ink_drop_action_on_click(true);
|
| + set_ink_drop_base_color(kMenuIconColor);
|
| +}
|
| +
|
| +SystemMenuButton::~SystemMenuButton() {}
|
| +
|
| +std::unique_ptr<views::InkDropRipple> SystemMenuButton::CreateInkDropRipple()
|
| + const {
|
| + return base::MakeUnique<views::FloodFillInkDropRipple>(
|
| + GetLocalBounds(), GetInkDropCenterBasedOnLastEvent(),
|
| + GetInkDropBaseColor(), ink_drop_visible_opacity());
|
| +}
|
| +
|
| +std::unique_ptr<views::InkDropHighlight>
|
| +SystemMenuButton::CreateInkDropHighlight() const {
|
| + gfx::Size size = GetLocalBounds().size();
|
| + return base::MakeUnique<views::InkDropHighlight>(
|
| + size, kInkDropSmallCornerRadius,
|
| + gfx::RectF(gfx::SizeF(size)).CenterPoint(), kMenuIconColor);
|
| +}
|
| +
|
| +bool SystemMenuButton::ShouldShowInkDropForFocus() const {
|
| + return false;
|
| +}
|
| +
|
| +} // namespace ash
|
|
|