| Index: ash/system/user/button_from_view.cc
|
| diff --git a/ash/system/user/button_from_view.cc b/ash/system/user/button_from_view.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..64b641d72c0aae006c3e97932f677b5c7cb36262
|
| --- /dev/null
|
| +++ b/ash/system/user/button_from_view.cc
|
| @@ -0,0 +1,71 @@
|
| +// Copyright 2014 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/system/user/button_from_view.h"
|
| +
|
| +#include "ash/system/tray/tray_constants.h"
|
| +#include "ui/views/background.h"
|
| +#include "ui/views/border.h"
|
| +#include "ui/views/layout/box_layout.h"
|
| +
|
| +namespace ash {
|
| +
|
| +namespace {
|
| +
|
| +// The border color of the user button.
|
| +const SkColor kBorderColor = 0xffdcdcdc;
|
| +
|
| +} // namespace
|
| +
|
| +namespace tray {
|
| +
|
| +ButtonFromView::ButtonFromView(views::View* content,
|
| + views::ButtonListener* listener,
|
| + bool highlight_on_hover)
|
| + : CustomButton(listener),
|
| + content_(content),
|
| + highlight_on_hover_(highlight_on_hover),
|
| + button_hovered_(false),
|
| + show_border_(false) {
|
| + set_notify_enter_exit_on_child(true);
|
| + SetLayoutManager(
|
| + new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0));
|
| + AddChildView(content_);
|
| + ShowActive();
|
| +}
|
| +
|
| +ButtonFromView::~ButtonFromView() {}
|
| +
|
| +void ButtonFromView::ForceBorderVisible(bool show) {
|
| + show_border_ = show;
|
| + ShowActive();
|
| +}
|
| +
|
| +void ButtonFromView::OnMouseEntered(const ui::MouseEvent& event) {
|
| + button_hovered_ = true;
|
| + ShowActive();
|
| +}
|
| +
|
| +void ButtonFromView::OnMouseExited(const ui::MouseEvent& event) {
|
| + button_hovered_ = false;
|
| + ShowActive();
|
| +}
|
| +
|
| +void ButtonFromView::ShowActive() {
|
| + bool border_visible =
|
| + (button_hovered_ && highlight_on_hover_) || show_border_;
|
| + SkColor border_color = border_visible ? kBorderColor : SK_ColorTRANSPARENT;
|
| + SetBorder(views::Border::CreateSolidBorder(1, border_color));
|
| + if (highlight_on_hover_) {
|
| + SkColor background_color =
|
| + button_hovered_ ? kHoverBackgroundColor : kBackgroundColor;
|
| + content_->set_background(
|
| + views::Background::CreateSolidBackground(background_color));
|
| + set_background(views::Background::CreateSolidBackground(background_color));
|
| + }
|
| + SchedulePaint();
|
| +}
|
| +
|
| +} // namespace tray
|
| +} // namespace ash
|
|
|