Home | History | Annotate | Download | only in button
      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