1 // Copyright (c) 2011 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. 4 5 #include "ui/views/controls/button/button.h" 6 7 #include "base/strings/utf_string_conversions.h" 8 #include "ui/base/accessibility/accessible_view_state.h" 9 10 namespace views { 11 12 //////////////////////////////////////////////////////////////////////////////// 13 // Button, public: 14 15 Button::~Button() { 16 } 17 18 void Button::SetTooltipText(const string16& tooltip_text) { 19 tooltip_text_ = tooltip_text; 20 if (accessible_name_.empty()) 21 accessible_name_ = tooltip_text_; 22 TooltipTextChanged(); 23 } 24 25 void Button::SetAccessibleName(const string16& name) { 26 accessible_name_ = name; 27 } 28 29 //////////////////////////////////////////////////////////////////////////////// 30 // Button, View overrides: 31 32 bool Button::GetTooltipText(const gfx::Point& p, string16* tooltip) const { 33 if (tooltip_text_.empty()) 34 return false; 35 36 *tooltip = tooltip_text_; 37 return true; 38 } 39 40 void Button::GetAccessibleState(ui::AccessibleViewState* state) { 41 state->role = ui::AccessibilityTypes::ROLE_PUSHBUTTON; 42 state->name = accessible_name_; 43 } 44 45 //////////////////////////////////////////////////////////////////////////////// 46 // Button, protected: 47 48 Button::Button(ButtonListener* listener) 49 : listener_(listener), 50 tag_(-1) { 51 SetAccessibilityFocusable(true); 52 } 53 54 void Button::NotifyClick(const ui::Event& event) { 55 // We can be called when there is no listener, in cases like double clicks on 56 // menu buttons etc. 57 if (listener_) 58 listener_->ButtonPressed(this, event); 59 } 60 61 } // namespace views 62