Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(503)

Side by Side Diff: ui/views/controls/slider.cc

Issue 2335513002: Adding ripple effect for clicks on MD slider (Closed)
Patch Set: adding animation Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« ui/views/controls/slider.h ('K') | « ui/views/controls/slider.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/slider.h" 5 #include "ui/views/controls/slider.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 172
173 float Slider::GetAnimatingValue() const{ 173 float Slider::GetAnimatingValue() const{
174 return move_animation_.get() && move_animation_->is_animating() 174 return move_animation_.get() && move_animation_->is_animating()
175 ? animating_value_ 175 ? animating_value_
176 : value_; 176 : value_;
177 } 177 }
178 178
179 bool Slider::OnMousePressed(const ui::MouseEvent& event) { 179 bool Slider::OnMousePressed(const ui::MouseEvent& event) {
180 if (!event.IsOnlyLeftMouseButton()) 180 if (!event.IsOnlyLeftMouseButton())
181 return false; 181 return false;
182 SetFocus(true);
bruthig 2016/09/21 00:27:46 Instead of calling SetFocus() from OnMousePressed(
yiyix 2016/09/21 15:20:52 good call!!
182 OnSliderDragStarted(); 183 OnSliderDragStarted();
183 PrepareForMove(event.location().x()); 184 PrepareForMove(event.location().x());
184 MoveButtonTo(event.location()); 185 MoveButtonTo(event.location());
185 return true; 186 return true;
186 } 187 }
187 188
188 bool Slider::OnMouseDragged(const ui::MouseEvent& event) { 189 bool Slider::OnMouseDragged(const ui::MouseEvent& event) {
189 MoveButtonTo(event.location()); 190 MoveButtonTo(event.location());
190 return true; 191 return true;
191 } 192 }
192 193
193 void Slider::OnMouseReleased(const ui::MouseEvent& event) { 194 void Slider::OnMouseReleased(const ui::MouseEvent& event) {
195 SetFocus(false);
194 OnSliderDragEnded(); 196 OnSliderDragEnded();
195 } 197 }
196 198
197 bool Slider::OnKeyPressed(const ui::KeyEvent& event) { 199 bool Slider::OnKeyPressed(const ui::KeyEvent& event) {
198 float new_value = value_; 200 float new_value = value_;
199 if (event.key_code() == ui::VKEY_LEFT) 201 if (event.key_code() == ui::VKEY_LEFT)
200 new_value -= keyboard_increment_; 202 new_value -= keyboard_increment_;
201 else if (event.key_code() == ui::VKEY_RIGHT) 203 else if (event.key_code() == ui::VKEY_RIGHT)
202 new_value += keyboard_increment_; 204 new_value += keyboard_increment_;
203 else 205 else
204 return false; 206 return false;
205 SetValueInternal(new_value, VALUE_CHANGED_BY_USER); 207 SetValueInternal(new_value, VALUE_CHANGED_BY_USER);
206 return true; 208 return true;
207 } 209 }
208 210
209 void Slider::OnFocus() { 211 void Slider::OnFocus() {
210 View::OnFocus(); 212 View::OnFocus();
213 SetFocus(true);
211 SchedulePaint(); 214 SchedulePaint();
212 } 215 }
213 216
214 void Slider::OnBlur() { 217 void Slider::OnBlur() {
215 View::OnBlur(); 218 View::OnBlur();
219 SetFocus(false);
216 SchedulePaint(); 220 SchedulePaint();
217 } 221 }
218 222
219 void Slider::OnGestureEvent(ui::GestureEvent* event) { 223 void Slider::OnGestureEvent(ui::GestureEvent* event) {
220 switch (event->type()) { 224 switch (event->type()) {
221 // In a multi point gesture only the touch point will generate 225 // In a multi point gesture only the touch point will generate
222 // an ET_GESTURE_TAP_DOWN event. 226 // an ET_GESTURE_TAP_DOWN event.
223 case ui::ET_GESTURE_TAP_DOWN: 227 case ui::ET_GESTURE_TAP_DOWN:
224 OnSliderDragStarted(); 228 OnSliderDragStarted();
225 PrepareForMove(event->location().x()); 229 PrepareForMove(event->location().x());
226 // Intentional fall through to next case. 230 // Intentional fall through to next case.
227 case ui::ET_GESTURE_SCROLL_BEGIN: 231 case ui::ET_GESTURE_SCROLL_BEGIN:
228 case ui::ET_GESTURE_SCROLL_UPDATE: 232 case ui::ET_GESTURE_SCROLL_UPDATE:
233 SetFocus(true);
229 MoveButtonTo(event->location()); 234 MoveButtonTo(event->location());
230 event->SetHandled(); 235 event->SetHandled();
231 break; 236 break;
232 case ui::ET_GESTURE_END: 237 case ui::ET_GESTURE_END:
238 SetFocus(false);
233 MoveButtonTo(event->location()); 239 MoveButtonTo(event->location());
234 event->SetHandled(); 240 event->SetHandled();
235 if (event->details().touch_points() <= 1) 241 if (event->details().touch_points() <= 1)
236 OnSliderDragEnded(); 242 OnSliderDragEnded();
237 break; 243 break;
238 default: 244 default:
239 break; 245 break;
240 } 246 }
241 } 247 }
242 248
243 void Slider::AnimationProgressed(const gfx::Animation* animation) { 249 void Slider::AnimationProgressed(const gfx::Animation* animation) {
244 animating_value_ = animation->CurrentValueBetween(animating_value_, value_); 250 animating_value_ = animation->CurrentValueBetween(animating_value_, value_);
bruthig 2016/09/21 00:27:46 This should only update |animating_value_| if |ani
yiyix 2016/09/21 15:20:52 Done.
245 SchedulePaint(); 251 SchedulePaint();
246 } 252 }
247 253
248 void Slider::GetAccessibleState(ui::AXViewState* state) { 254 void Slider::GetAccessibleState(ui::AXViewState* state) {
249 state->role = ui::AX_ROLE_SLIDER; 255 state->role = ui::AX_ROLE_SLIDER;
250 state->name = accessible_name_; 256 state->name = accessible_name_;
251 state->value = base::UTF8ToUTF16( 257 state->value = base::UTF8ToUTF16(
252 base::StringPrintf("%d%%", static_cast<int>(value_ * 100 + 0.5))); 258 base::StringPrintf("%d%%", static_cast<int>(value_ * 100 + 0.5)));
253 } 259 }
254 260
255 void Slider::OnSliderDragStarted() { 261 void Slider::OnSliderDragStarted() {
256 if (listener_) 262 if (listener_)
257 listener_->SliderDragStarted(this); 263 listener_->SliderDragStarted(this);
258 } 264 }
259 265
260 void Slider::OnSliderDragEnded() { 266 void Slider::OnSliderDragEnded() {
261 if (listener_) 267 if (listener_)
262 listener_->SliderDragEnded(this); 268 listener_->SliderDragEnded(this);
263 } 269 }
264 270
265 } // namespace views 271 } // namespace views
OLDNEW
« ui/views/controls/slider.h ('K') | « ui/views/controls/slider.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698