Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/views/controls/link.h" | 5 #include "ui/views/controls/link.h" |
| 6 | 6 |
| 7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 44 const char* Link::GetClassName() const { | 44 const char* Link::GetClassName() const { |
| 45 return kViewClassName; | 45 return kViewClassName; |
| 46 } | 46 } |
| 47 | 47 |
| 48 gfx::NativeCursor Link::GetCursor(const ui::MouseEvent& event) { | 48 gfx::NativeCursor Link::GetCursor(const ui::MouseEvent& event) { |
| 49 if (!enabled()) | 49 if (!enabled()) |
| 50 return gfx::kNullCursor; | 50 return gfx::kNullCursor; |
| 51 return GetNativeHandCursor(); | 51 return GetNativeHandCursor(); |
| 52 } | 52 } |
| 53 | 53 |
| 54 bool Link::HitTestRect(const gfx::Rect& rect) const { | |
| 55 // We need to allow clicks on the link. So we override the implementation in | |
| 56 // Label and use the default implementation of View. | |
| 57 return View::HitTestRect(rect); | |
| 58 } | |
| 59 | |
| 60 bool Link::OnMousePressed(const ui::MouseEvent& event) { | 54 bool Link::OnMousePressed(const ui::MouseEvent& event) { |
| 61 if (!enabled() || | 55 if (!enabled() || |
| 62 (!event.IsLeftMouseButton() && !event.IsMiddleMouseButton())) | 56 (!event.IsLeftMouseButton() && !event.IsMiddleMouseButton())) |
| 63 return false; | 57 return false; |
| 64 SetPressed(true); | 58 SetPressed(true); |
| 65 return true; | 59 return true; |
| 66 } | 60 } |
| 67 | 61 |
| 68 bool Link::OnMouseDragged(const ui::MouseEvent& event) { | 62 bool Link::OnMouseDragged(const ui::MouseEvent& event) { |
| 69 SetPressed(enabled() && | 63 SetPressed(enabled() && |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 165 // border, when in this case we probably wanted zero width. | 159 // border, when in this case we probably wanted zero width. |
| 166 SetFocusable(!text.empty()); | 160 SetFocusable(!text.empty()); |
| 167 } | 161 } |
| 168 | 162 |
| 169 void Link::SetEnabledColor(SkColor color) { | 163 void Link::SetEnabledColor(SkColor color) { |
| 170 requested_enabled_color_ = color; | 164 requested_enabled_color_ = color; |
| 171 if (!pressed_) | 165 if (!pressed_) |
| 172 Label::SetEnabledColor(requested_enabled_color_); | 166 Label::SetEnabledColor(requested_enabled_color_); |
| 173 } | 167 } |
| 174 | 168 |
| 169 bool Link::CanAcceptEvent(const ui::Event& event) { | |
| 170 // Links need to be able to accept events (e.g., clicking) even though | |
| 171 // in general Labels do not. | |
| 172 return true; | |
|
sadrul
2014/05/21 15:44:59
I think this should return View::CanAcceptEvent(ev
tdanderson
2014/05/21 21:03:26
Done.
| |
| 173 } | |
| 174 | |
| 175 void Link::SetPressedColor(SkColor color) { | 175 void Link::SetPressedColor(SkColor color) { |
| 176 requested_pressed_color_ = color; | 176 requested_pressed_color_ = color; |
| 177 if (pressed_) | 177 if (pressed_) |
| 178 Label::SetEnabledColor(requested_pressed_color_); | 178 Label::SetEnabledColor(requested_pressed_color_); |
| 179 } | 179 } |
| 180 | 180 |
| 181 void Link::SetUnderline(bool underline) { | 181 void Link::SetUnderline(bool underline) { |
| 182 if (underline_ == underline) | 182 if (underline_ == underline) |
| 183 return; | 183 return; |
| 184 underline_ = underline; | 184 underline_ = underline; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 220 void Link::RecalculateFont() { | 220 void Link::RecalculateFont() { |
| 221 // Underline the link iff it is enabled and |underline_| is true. | 221 // Underline the link iff it is enabled and |underline_| is true. |
| 222 const int style = font_list().GetFontStyle(); | 222 const int style = font_list().GetFontStyle(); |
| 223 const int intended_style = (enabled() && underline_) ? | 223 const int intended_style = (enabled() && underline_) ? |
| 224 (style | gfx::Font::UNDERLINE) : (style & ~gfx::Font::UNDERLINE); | 224 (style | gfx::Font::UNDERLINE) : (style & ~gfx::Font::UNDERLINE); |
| 225 if (style != intended_style) | 225 if (style != intended_style) |
| 226 Label::SetFontList(font_list().DeriveWithStyle(intended_style)); | 226 Label::SetFontList(font_list().DeriveWithStyle(intended_style)); |
| 227 } | 227 } |
| 228 | 228 |
| 229 } // namespace views | 229 } // namespace views |
| OLD | NEW |