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/scrollbar/native_scroll_bar_views.h" | 5 #include "ui/views/controls/scrollbar/native_scroll_bar_views.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "ui/events/keycodes/keyboard_codes.h" | 8 #include "ui/events/keycodes/keyboard_codes.h" |
9 #include "ui/gfx/canvas.h" | 9 #include "ui/gfx/canvas.h" |
10 #include "ui/gfx/path.h" | 10 #include "ui/gfx/path.h" |
(...skipping 14 matching lines...) Expand all Loading... |
25 enum Type { | 25 enum Type { |
26 UP, | 26 UP, |
27 DOWN, | 27 DOWN, |
28 LEFT, | 28 LEFT, |
29 RIGHT, | 29 RIGHT, |
30 }; | 30 }; |
31 | 31 |
32 ScrollBarButton(ButtonListener* listener, Type type); | 32 ScrollBarButton(ButtonListener* listener, Type type); |
33 virtual ~ScrollBarButton(); | 33 virtual ~ScrollBarButton(); |
34 | 34 |
35 virtual gfx::Size GetPreferredSize() OVERRIDE; | 35 virtual gfx::Size GetPreferredSize() const OVERRIDE; |
36 virtual const char* GetClassName() const OVERRIDE { | 36 virtual const char* GetClassName() const OVERRIDE { |
37 return "ScrollBarButton"; | 37 return "ScrollBarButton"; |
38 } | 38 } |
39 | 39 |
40 protected: | 40 protected: |
41 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; | 41 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; |
42 | 42 |
43 private: | 43 private: |
44 ui::NativeTheme::ExtraParams GetNativeThemeParams() const; | 44 ui::NativeTheme::ExtraParams GetNativeThemeParams() const; |
45 ui::NativeTheme::Part GetNativeThemePart() const; | 45 ui::NativeTheme::Part GetNativeThemePart() const; |
46 ui::NativeTheme::State GetNativeThemeState() const; | 46 ui::NativeTheme::State GetNativeThemeState() const; |
47 | 47 |
48 Type type_; | 48 Type type_; |
49 }; | 49 }; |
50 | 50 |
51 // Wrapper for the scroll thumb | 51 // Wrapper for the scroll thumb |
52 class ScrollBarThumb : public BaseScrollBarThumb { | 52 class ScrollBarThumb : public BaseScrollBarThumb { |
53 public: | 53 public: |
54 explicit ScrollBarThumb(BaseScrollBar* scroll_bar); | 54 explicit ScrollBarThumb(BaseScrollBar* scroll_bar); |
55 virtual ~ScrollBarThumb(); | 55 virtual ~ScrollBarThumb(); |
56 | 56 |
57 virtual gfx::Size GetPreferredSize() OVERRIDE; | 57 virtual gfx::Size GetPreferredSize() const OVERRIDE; |
58 virtual const char* GetClassName() const OVERRIDE { | 58 virtual const char* GetClassName() const OVERRIDE { |
59 return "ScrollBarThumb"; | 59 return "ScrollBarThumb"; |
60 } | 60 } |
61 | 61 |
62 protected: | 62 protected: |
63 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; | 63 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; |
64 | 64 |
65 private: | 65 private: |
66 ui::NativeTheme::ExtraParams GetNativeThemeParams() const; | 66 ui::NativeTheme::ExtraParams GetNativeThemeParams() const; |
67 ui::NativeTheme::Part GetNativeThemePart() const; | 67 ui::NativeTheme::Part GetNativeThemePart() const; |
68 ui::NativeTheme::State GetNativeThemeState() const; | 68 ui::NativeTheme::State GetNativeThemeState() const; |
69 | 69 |
70 ScrollBar* scroll_bar_; | 70 ScrollBar* scroll_bar_; |
71 }; | 71 }; |
72 | 72 |
73 ///////////////////////////////////////////////////////////////////////////// | 73 ///////////////////////////////////////////////////////////////////////////// |
74 // ScrollBarButton | 74 // ScrollBarButton |
75 | 75 |
76 ScrollBarButton::ScrollBarButton(ButtonListener* listener, Type type) | 76 ScrollBarButton::ScrollBarButton(ButtonListener* listener, Type type) |
77 : BaseScrollBarButton(listener), | 77 : BaseScrollBarButton(listener), |
78 type_(type) { | 78 type_(type) { |
79 SetFocusable(false); | 79 SetFocusable(false); |
80 SetAccessibilityFocusable(false); | 80 SetAccessibilityFocusable(false); |
81 } | 81 } |
82 | 82 |
83 ScrollBarButton::~ScrollBarButton() { | 83 ScrollBarButton::~ScrollBarButton() { |
84 } | 84 } |
85 | 85 |
86 gfx::Size ScrollBarButton::GetPreferredSize() { | 86 gfx::Size ScrollBarButton::GetPreferredSize() const { |
87 return GetNativeTheme()->GetPartSize(GetNativeThemePart(), | 87 return GetNativeTheme()->GetPartSize(GetNativeThemePart(), |
88 GetNativeThemeState(), | 88 GetNativeThemeState(), |
89 GetNativeThemeParams()); | 89 GetNativeThemeParams()); |
90 } | 90 } |
91 | 91 |
92 void ScrollBarButton::OnPaint(gfx::Canvas* canvas) { | 92 void ScrollBarButton::OnPaint(gfx::Canvas* canvas) { |
93 gfx::Rect bounds(GetPreferredSize()); | 93 gfx::Rect bounds(GetPreferredSize()); |
94 GetNativeTheme()->Paint(canvas->sk_canvas(), GetNativeThemePart(), | 94 GetNativeTheme()->Paint(canvas->sk_canvas(), GetNativeThemePart(), |
95 GetNativeThemeState(), bounds, | 95 GetNativeThemeState(), bounds, |
96 GetNativeThemeParams()); | 96 GetNativeThemeParams()); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 ScrollBarThumb::ScrollBarThumb(BaseScrollBar* scroll_bar) | 157 ScrollBarThumb::ScrollBarThumb(BaseScrollBar* scroll_bar) |
158 : BaseScrollBarThumb(scroll_bar), | 158 : BaseScrollBarThumb(scroll_bar), |
159 scroll_bar_(scroll_bar) { | 159 scroll_bar_(scroll_bar) { |
160 SetFocusable(false); | 160 SetFocusable(false); |
161 SetAccessibilityFocusable(false); | 161 SetAccessibilityFocusable(false); |
162 } | 162 } |
163 | 163 |
164 ScrollBarThumb::~ScrollBarThumb() { | 164 ScrollBarThumb::~ScrollBarThumb() { |
165 } | 165 } |
166 | 166 |
167 gfx::Size ScrollBarThumb::GetPreferredSize() { | 167 gfx::Size ScrollBarThumb::GetPreferredSize() const { |
168 return GetNativeTheme()->GetPartSize(GetNativeThemePart(), | 168 return GetNativeTheme()->GetPartSize(GetNativeThemePart(), |
169 GetNativeThemeState(), | 169 GetNativeThemeState(), |
170 GetNativeThemeParams()); | 170 GetNativeThemeParams()); |
171 } | 171 } |
172 | 172 |
173 void ScrollBarThumb::OnPaint(gfx::Canvas* canvas) { | 173 void ScrollBarThumb::OnPaint(gfx::Canvas* canvas) { |
174 const gfx::Rect local_bounds(GetLocalBounds()); | 174 const gfx::Rect local_bounds(GetLocalBounds()); |
175 const ui::NativeTheme::State theme_state = GetNativeThemeState(); | 175 const ui::NativeTheme::State theme_state = GetNativeThemeState(); |
176 const ui::NativeTheme::ExtraParams extra_params(GetNativeThemeParams()); | 176 const ui::NativeTheme::ExtraParams extra_params(GetNativeThemeParams()); |
177 GetNativeTheme()->Paint(canvas->sk_canvas(), | 177 GetNativeTheme()->Paint(canvas->sk_canvas(), |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 | 285 |
286 params_.scrollbar_track.track_x = bounds.x(); | 286 params_.scrollbar_track.track_x = bounds.x(); |
287 params_.scrollbar_track.track_y = bounds.y(); | 287 params_.scrollbar_track.track_y = bounds.y(); |
288 params_.scrollbar_track.track_width = bounds.width(); | 288 params_.scrollbar_track.track_width = bounds.width(); |
289 params_.scrollbar_track.track_height = bounds.height(); | 289 params_.scrollbar_track.track_height = bounds.height(); |
290 params_.scrollbar_track.classic_state = 0; | 290 params_.scrollbar_track.classic_state = 0; |
291 | 291 |
292 GetNativeTheme()->Paint(canvas->sk_canvas(), part_, state_, bounds, params_); | 292 GetNativeTheme()->Paint(canvas->sk_canvas(), part_, state_, bounds, params_); |
293 } | 293 } |
294 | 294 |
295 gfx::Size NativeScrollBarViews::GetPreferredSize() { | 295 gfx::Size NativeScrollBarViews::GetPreferredSize() const { |
296 const ui::NativeTheme* theme = native_scroll_bar_->GetNativeTheme(); | 296 const ui::NativeTheme* theme = native_scroll_bar_->GetNativeTheme(); |
297 if (native_scroll_bar_->IsHorizontal()) | 297 if (native_scroll_bar_->IsHorizontal()) |
298 return gfx::Size(0, GetHorizontalScrollBarHeight(theme)); | 298 return gfx::Size(0, GetHorizontalScrollBarHeight(theme)); |
299 return gfx::Size(GetVerticalScrollBarWidth(theme), 0); | 299 return gfx::Size(GetVerticalScrollBarWidth(theme), 0); |
300 } | 300 } |
301 | 301 |
302 const char* NativeScrollBarViews::GetClassName() const { | 302 const char* NativeScrollBarViews::GetClassName() const { |
303 return kViewClassName; | 303 return kViewClassName; |
304 } | 304 } |
305 | 305 |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 thumb_params.scrollbar_thumb.is_hovering = false; | 415 thumb_params.scrollbar_thumb.is_hovering = false; |
416 gfx::Size track_size = theme->GetPartSize( | 416 gfx::Size track_size = theme->GetPartSize( |
417 ui::NativeTheme::kScrollbarVerticalThumb, | 417 ui::NativeTheme::kScrollbarVerticalThumb, |
418 ui::NativeTheme::kNormal, | 418 ui::NativeTheme::kNormal, |
419 thumb_params); | 419 thumb_params); |
420 | 420 |
421 return std::max(track_size.width(), button_size.width()); | 421 return std::max(track_size.width(), button_size.width()); |
422 } | 422 } |
423 | 423 |
424 } // namespace views | 424 } // namespace views |
OLD | NEW |