// Copyright (c) 2011 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 "ui/views/controls/button/button.h" #include "base/strings/utf_string_conversions.h" #include "ui/accessibility/ax_view_state.h" namespace views { //////////////////////////////////////////////////////////////////////////////// // Button, static public: // static Button::ButtonState Button::GetButtonStateFrom(ui::NativeTheme::State state) { switch (state) { case ui::NativeTheme::kDisabled: return Button::STATE_DISABLED; case ui::NativeTheme::kHovered: return Button::STATE_HOVERED; case ui::NativeTheme::kNormal: return Button::STATE_NORMAL; case ui::NativeTheme::kPressed: return Button::STATE_PRESSED; case ui::NativeTheme::kNumStates: NOTREACHED(); } return Button::STATE_NORMAL; } //////////////////////////////////////////////////////////////////////////////// // Button, public: Button::~Button() { } void Button::SetTooltipText(const base::string16& tooltip_text) { tooltip_text_ = tooltip_text; if (accessible_name_.empty()) accessible_name_ = tooltip_text_; TooltipTextChanged(); } void Button::SetAccessibleName(const base::string16& name) { accessible_name_ = name; } //////////////////////////////////////////////////////////////////////////////// // Button, View overrides: bool Button::GetTooltipText(const gfx::Point& p, base::string16* tooltip) const { if (tooltip_text_.empty()) return false; *tooltip = tooltip_text_; return true; } void Button::GetAccessibleState(ui::AXViewState* state) { state->role = ui::AX_ROLE_BUTTON; state->name = accessible_name_; } //////////////////////////////////////////////////////////////////////////////// // Button, protected: Button::Button(ButtonListener* listener) : listener_(listener), tag_(-1) { SetAccessibilityFocusable(true); } void Button::NotifyClick(const ui::Event& event) { // We can be called when there is no listener, in cases like double clicks on // menu buttons etc. if (listener_) listener_->ButtonPressed(this, event); } void Button::OnClickCanceled(const ui::Event& event) {} } // namespace views