1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ash/system/user/button_from_view.h"
7 #include "ash/system/tray/tray_constants.h"
8 #include "ui/views/background.h"
9 #include "ui/views/border.h"
10 #include "ui/views/layout/box_layout.h"
16 // The border color of the user button.
17 const SkColor kBorderColor = 0xffdcdcdc;
23 ButtonFromView::ButtonFromView(views::View* content,
24 views::ButtonListener* listener,
25 bool highlight_on_hover)
26 : CustomButton(listener),
28 highlight_on_hover_(highlight_on_hover),
29 button_hovered_(false),
31 set_notify_enter_exit_on_child(true);
33 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0));
34 AddChildView(content_);
38 ButtonFromView::~ButtonFromView() {}
40 void ButtonFromView::ForceBorderVisible(bool show) {
45 void ButtonFromView::OnMouseEntered(const ui::MouseEvent& event) {
46 button_hovered_ = true;
50 void ButtonFromView::OnMouseExited(const ui::MouseEvent& event) {
51 button_hovered_ = false;
55 void ButtonFromView::ShowActive() {
57 (button_hovered_ && highlight_on_hover_) || show_border_;
58 SkColor border_color = border_visible ? kBorderColor : SK_ColorTRANSPARENT;
59 SetBorder(views::Border::CreateSolidBorder(1, border_color));
60 if (highlight_on_hover_) {
61 SkColor background_color =
62 button_hovered_ ? kHoverBackgroundColor : kBackgroundColor;
63 content_->set_background(
64 views::Background::CreateSolidBackground(background_color));
65 set_background(views::Background::CreateSolidBackground(background_color));