| 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/events/gestures/gesture_recognizer_impl.h" | 5 #include "ui/events/gestures/gesture_recognizer_impl.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
| 10 #include "ui/events/event.h" | 10 #include "ui/events/event.h" |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 | 71 |
| 72 GestureConsumer* GestureRecognizerImpl::GetTargetForGestureEvent( | 72 GestureConsumer* GestureRecognizerImpl::GetTargetForGestureEvent( |
| 73 const GestureEvent& event) { | 73 const GestureEvent& event) { |
| 74 GestureConsumer* target = NULL; | 74 GestureConsumer* target = NULL; |
| 75 int touch_id = event.GetLowestTouchId(); | 75 int touch_id = event.GetLowestTouchId(); |
| 76 target = touch_id_target_for_gestures_[touch_id]; | 76 target = touch_id_target_for_gestures_[touch_id]; |
| 77 return target; | 77 return target; |
| 78 } | 78 } |
| 79 | 79 |
| 80 GestureConsumer* GestureRecognizerImpl::GetTargetForLocation( | 80 GestureConsumer* GestureRecognizerImpl::GetTargetForLocation( |
| 81 const gfx::Point& location, int source_device_id) { | 81 const gfx::Point& location) { |
| 82 const GesturePoint* closest_point = NULL; | 82 const GesturePoint* closest_point = NULL; |
| 83 int64 closest_distance_squared = 0; | 83 int64 closest_distance_squared = 0; |
| 84 std::map<GestureConsumer*, GestureSequence*>::iterator i; | 84 std::map<GestureConsumer*, GestureSequence*>::iterator i; |
| 85 for (i = consumer_sequence_.begin(); i != consumer_sequence_.end(); ++i) { | 85 for (i = consumer_sequence_.begin(); i != consumer_sequence_.end(); ++i) { |
| 86 const GesturePoint* points = i->second->points(); | 86 const GesturePoint* points = i->second->points(); |
| 87 for (int j = 0; j < GestureSequence::kMaxGesturePoints; ++j) { | 87 for (int j = 0; j < GestureSequence::kMaxGesturePoints; ++j) { |
| 88 if (!points[j].in_use() || | 88 if (!points[j].in_use()) |
| 89 source_device_id != points[j].source_device_id()) { | |
| 90 continue; | 89 continue; |
| 91 } | |
| 92 gfx::Vector2d delta = points[j].last_touch_position() - location; | 90 gfx::Vector2d delta = points[j].last_touch_position() - location; |
| 93 // Relative distance is all we need here, so LengthSquared() is | 91 // Relative distance is all we need here, so LengthSquared() is |
| 94 // appropriate, and cheaper than Length(). | 92 // appropriate, and cheaper than Length(). |
| 95 int64 distance_squared = delta.LengthSquared(); | 93 int64 distance_squared = delta.LengthSquared(); |
| 96 if (!closest_point || distance_squared < closest_distance_squared) { | 94 if (!closest_point || distance_squared < closest_distance_squared) { |
| 97 closest_point = &points[j]; | 95 closest_point = &points[j]; |
| 98 closest_distance_squared = distance_squared; | 96 closest_distance_squared = distance_squared; |
| 99 } | 97 } |
| 100 } | 98 } |
| 101 } | 99 } |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 | 264 |
| 267 static GestureRecognizerImpl* g_gesture_recognizer_instance = NULL; | 265 static GestureRecognizerImpl* g_gesture_recognizer_instance = NULL; |
| 268 | 266 |
| 269 // GestureRecognizer, static | 267 // GestureRecognizer, static |
| 270 GestureRecognizer* GestureRecognizer::Get() { | 268 GestureRecognizer* GestureRecognizer::Get() { |
| 271 if (!g_gesture_recognizer_instance) | 269 if (!g_gesture_recognizer_instance) |
| 272 g_gesture_recognizer_instance = new GestureRecognizerImpl(); | 270 g_gesture_recognizer_instance = new GestureRecognizerImpl(); |
| 273 return g_gesture_recognizer_instance; | 271 return g_gesture_recognizer_instance; |
| 274 } | 272 } |
| 275 | 273 |
| 276 // GestureRecognizer, static | |
| 277 void GestureRecognizer::Reset() { | |
| 278 g_gesture_recognizer_instance = NULL; | |
| 279 } | |
| 280 | |
| 281 void SetGestureRecognizerForTesting(GestureRecognizer* gesture_recognizer) { | 274 void SetGestureRecognizerForTesting(GestureRecognizer* gesture_recognizer) { |
| 282 // Transfer helpers to the new GR. | 275 // Transfer helpers to the new GR. |
| 283 std::vector<GestureEventHelper*>& helpers = | 276 std::vector<GestureEventHelper*>& helpers = |
| 284 g_gesture_recognizer_instance->helpers(); | 277 g_gesture_recognizer_instance->helpers(); |
| 285 std::vector<GestureEventHelper*>::iterator it; | 278 std::vector<GestureEventHelper*>::iterator it; |
| 286 for (it = helpers.begin(); it != helpers.end(); ++it) | 279 for (it = helpers.begin(); it != helpers.end(); ++it) |
| 287 gesture_recognizer->AddGestureEventHelper(*it); | 280 gesture_recognizer->AddGestureEventHelper(*it); |
| 288 | 281 |
| 289 helpers.clear(); | 282 helpers.clear(); |
| 290 g_gesture_recognizer_instance = | 283 g_gesture_recognizer_instance = |
| 291 static_cast<GestureRecognizerImpl*>(gesture_recognizer); | 284 static_cast<GestureRecognizerImpl*>(gesture_recognizer); |
| 292 } | 285 } |
| 293 | 286 |
| 294 } // namespace ui | 287 } // namespace ui |
| OLD | NEW |