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

Unified Diff: ui/chromeos/touch_exploration_controller.cc

Issue 2655303004: Add id properties to PointerEvent (Closed)
Patch Set: pointer id Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: ui/chromeos/touch_exploration_controller.cc
diff --git a/ui/chromeos/touch_exploration_controller.cc b/ui/chromeos/touch_exploration_controller.cc
index 1adb000486182a21277fffb6fff49884b6d19432..40a4778eacd3499d46b8f45a82bd70fa256e927b 100644
--- a/ui/chromeos/touch_exploration_controller.cc
+++ b/ui/chromeos/touch_exploration_controller.cc
@@ -130,7 +130,7 @@ ui::EventRewriteStatus TouchExplorationController::RewriteEvent(
const ui::EventType type = touch_event.type();
const gfx::PointF& location = touch_event.location_f();
- const int touch_id = touch_event.touch_id();
+ const int touch_id = touch_event.pointer_details().id;
// Always update touch ids and touch locations, so we can use those
// no matter what state we're in.
@@ -283,7 +283,7 @@ ui::EventRewriteStatus TouchExplorationController::InNoFingersDown(
&TouchExplorationController::OnPassthroughTimerFired);
}
initial_press_.reset(new TouchEvent(event));
- initial_presses_[event.touch_id()] = event.location();
+ initial_presses_[event.pointer_details().id] = event.location();
last_unused_finger_event_.reset(new TouchEvent(event));
StartTapTimer();
SET_STATE(SINGLE_TAP_PRESSED);
@@ -300,7 +300,8 @@ ui::EventRewriteStatus TouchExplorationController::InSingleTapPressed(
(location == BOTTOM_LEFT_CORNER) || (location == BOTTOM_RIGHT_CORNER);
// If the event is from the initial press and the location is no longer in the
// corner, then we are not waiting for a corner passthrough anymore.
- if (event.touch_id() == initial_press_->touch_id() && !in_a_bottom_corner) {
+ if (event.pointer_details().id == initial_press_->pointer_details().id &&
+ !in_a_bottom_corner) {
if (passthrough_timer_.IsRunning()) {
passthrough_timer_.Stop();
// Since the long press timer has been running, it is possible that the
@@ -314,14 +315,14 @@ ui::EventRewriteStatus TouchExplorationController::InSingleTapPressed(
}
if (type == ui::ET_TOUCH_PRESSED) {
- initial_presses_[event.touch_id()] = event.location();
+ initial_presses_[event.pointer_details().id] = event.location();
SET_STATE(TWO_FINGER_TAP);
return EVENT_REWRITE_DISCARD;
} else if (type == ui::ET_TOUCH_RELEASED || type == ui::ET_TOUCH_CANCELLED) {
if (passthrough_timer_.IsRunning())
passthrough_timer_.Stop();
if (current_touch_ids_.size() == 0 &&
- event.touch_id() == initial_press_->touch_id()) {
+ event.pointer_details().id == initial_press_->pointer_details().id) {
SET_STATE(SINGLE_TAP_RELEASED);
} else if (current_touch_ids_.size() == 0) {
SET_STATE(NO_FINGERS_DOWN);
@@ -506,7 +507,7 @@ ui::EventRewriteStatus TouchExplorationController::InCornerPassthrough(
ui::EventType type = event.type();
// If the first finger has left the corner, then exit passthrough.
- if (event.touch_id() == initial_press_->touch_id()) {
+ if (event.pointer_details().id == initial_press_->pointer_details().id) {
int edges = FindEdgesWithinBounds(event.location(), kSlopDistanceFromEdge);
bool in_a_bottom_corner = (edges == BOTTOM_LEFT_CORNER) ||
(edges == BOTTOM_RIGHT_CORNER);
@@ -522,7 +523,7 @@ ui::EventRewriteStatus TouchExplorationController::InCornerPassthrough(
}
std::unique_ptr<ui::TouchEvent> new_event(new ui::TouchEvent(
- type, gfx::Point(), event.touch_id(), event.time_stamp()));
+ type, gfx::Point(), event.pointer_details().id, event.time_stamp()));
new_event->set_location_f(event.location_f());
new_event->set_root_location_f(event.location_f());
new_event->set_flags(event.flags());
@@ -537,14 +538,15 @@ ui::EventRewriteStatus TouchExplorationController::InCornerPassthrough(
ui::EventRewriteStatus TouchExplorationController::InOneFingerPassthrough(
const ui::TouchEvent& event,
std::unique_ptr<ui::Event>* rewritten_event) {
- if (event.touch_id() != initial_press_->touch_id()) {
+ if (event.pointer_details().id != initial_press_->pointer_details().id) {
if (current_touch_ids_.size() == 0) {
SET_STATE(NO_FINGERS_DOWN);
}
return ui::EVENT_REWRITE_DISCARD;
}
- std::unique_ptr<ui::TouchEvent> new_event(new ui::TouchEvent(
- event.type(), gfx::Point(), event.touch_id(), event.time_stamp()));
+ std::unique_ptr<ui::TouchEvent> new_event(
+ new ui::TouchEvent(event.type(), gfx::Point(), event.pointer_details().id,
+ event.time_stamp()));
new_event->set_location_f(event.location_f() - passthrough_offset_);
new_event->set_root_location_f(event.location_f() - passthrough_offset_);
new_event->set_flags(event.flags());
@@ -564,9 +566,9 @@ ui::EventRewriteStatus TouchExplorationController::InTouchExploreSecondPress(
// through. The user enters the wait state, Since there has already been
// a press dispatched when split tap began, the touch needs to be
// cancelled.
- std::unique_ptr<ui::TouchEvent> new_event(
- new ui::TouchEvent(ui::ET_TOUCH_CANCELLED, gfx::Point(),
- initial_press_->touch_id(), event.time_stamp()));
+ std::unique_ptr<ui::TouchEvent> new_event(new ui::TouchEvent(
+ ui::ET_TOUCH_CANCELLED, gfx::Point(),
+ initial_press_->pointer_details().id, event.time_stamp()));
// TODO(dmazzoni): fix for multiple displays. http://crbug.com/616793
new_event->set_location_f(anchor_point_);
new_event->set_root_location_f(anchor_point_);
@@ -578,9 +580,11 @@ ui::EventRewriteStatus TouchExplorationController::InTouchExploreSecondPress(
// If the fingers have moved too far from their original locations,
// the user can no longer split tap.
ui::TouchEvent* original_touch;
- if (event.touch_id() == last_touch_exploration_->touch_id()) {
+ if (event.pointer_details().id ==
+ last_touch_exploration_->pointer_details().id) {
original_touch = last_touch_exploration_.get();
- } else if (event.touch_id() == initial_press_->touch_id()) {
+ } else if (event.pointer_details().id ==
+ initial_press_->pointer_details().id) {
original_touch = initial_press_.get();
} else {
NOTREACHED();
@@ -600,7 +604,8 @@ ui::EventRewriteStatus TouchExplorationController::InTouchExploreSecondPress(
// If the touch exploration finger is lifted, there is no option to return
// to touch explore anymore. The remaining finger acts as a pending
// tap or long tap for the last touch explore location.
- if (event.touch_id() == last_touch_exploration_->touch_id()) {
+ if (event.pointer_details().id ==
+ last_touch_exploration_->pointer_details().id) {
SET_STATE(TOUCH_RELEASE_PENDING);
return EVENT_REWRITE_DISCARD;
}
@@ -647,14 +652,16 @@ void TouchExplorationController::SendSimulatedClick() {
// Otherwise send a simulated press/release at the anchor point.
std::unique_ptr<ui::TouchEvent> touch_press;
touch_press.reset(new ui::TouchEvent(ui::ET_TOUCH_PRESSED, gfx::Point(),
- initial_press_->touch_id(), Now()));
+ initial_press_->pointer_details().id,
+ Now()));
touch_press->set_location_f(anchor_point_);
touch_press->set_root_location_f(anchor_point_);
DispatchEvent(touch_press.get());
std::unique_ptr<ui::TouchEvent> touch_release;
touch_release.reset(new ui::TouchEvent(ui::ET_TOUCH_RELEASED, gfx::Point(),
- initial_press_->touch_id(), Now()));
+ initial_press_->pointer_details().id,
+ Now()));
touch_release->set_location_f(anchor_point_);
touch_release->set_root_location_f(anchor_point_);
DispatchEvent(touch_release.get());
@@ -670,7 +677,7 @@ ui::EventRewriteStatus TouchExplorationController::InSlideGesture(
// If additional fingers are added before a swipe gesture has been registered,
// then wait until all fingers have been lifted.
if (type == ui::ET_TOUCH_PRESSED ||
- event.touch_id() != initial_press_->touch_id()) {
+ event.pointer_details().id != initial_press_->pointer_details().id) {
if (sound_timer_.IsRunning())
sound_timer_.Stop();
SET_STATE(WAIT_FOR_NO_FINGERS);
@@ -717,7 +724,7 @@ ui::EventRewriteStatus TouchExplorationController::InTwoFingerTap(
if (type == ui::ET_TOUCH_MOVED) {
// Determine if it was a swipe.
- gfx::Point original_location = initial_presses_[event.touch_id()];
+ gfx::Point original_location = initial_presses_[event.pointer_details().id];
float distance = (event.location() - original_location).Length();
// If the user moves too far from the original position, consider the
// movement a swipe.
@@ -770,9 +777,9 @@ void TouchExplorationController::OnTapTimerFired() {
SET_STATE(ONE_FINGER_PASSTHROUGH);
passthrough_offset_ =
last_unused_finger_event_->location_f() - anchor_point_;
- std::unique_ptr<ui::TouchEvent> passthrough_press(
- new ui::TouchEvent(ui::ET_TOUCH_PRESSED, gfx::Point(),
- last_unused_finger_event_->touch_id(), Now()));
+ std::unique_ptr<ui::TouchEvent> passthrough_press(new ui::TouchEvent(
+ ui::ET_TOUCH_PRESSED, gfx::Point(),
+ last_unused_finger_event_->pointer_details().id, Now()));
passthrough_press->set_location_f(anchor_point_);
passthrough_press->set_root_location_f(anchor_point_);
DispatchEvent(passthrough_press.get());
@@ -814,12 +821,12 @@ void TouchExplorationController::OnPassthroughTimerFired() {
// Check that initial press isn't null. Also a check that if the initial
// corner press was released, then it should not be in corner passthrough.
if (!initial_press_ ||
- touch_locations_.find(initial_press_->touch_id()) !=
+ touch_locations_.find(initial_press_->pointer_details().id) !=
touch_locations_.end()) {
}
gfx::Point location =
- ToRoundedPoint(touch_locations_[initial_press_->touch_id()]);
+ ToRoundedPoint(touch_locations_[initial_press_->pointer_details().id]);
int corner = FindEdgesWithinBounds(location, kSlopDistanceFromEdge);
if (corner != BOTTOM_LEFT_CORNER && corner != BOTTOM_RIGHT_CORNER)
return;
@@ -1133,7 +1140,7 @@ void TouchExplorationController::VlogEvent(const ui::TouchEvent& touch_event,
return;
if (prev_event_ && prev_event_->type() == touch_event.type() &&
- prev_event_->touch_id() == touch_event.touch_id()) {
+ prev_event_->pointer_details().id == touch_event.pointer_details().id) {
return;
}
// The above statement prevents events of the same type and id from being
@@ -1146,7 +1153,7 @@ void TouchExplorationController::VlogEvent(const ui::TouchEvent& touch_event,
const std::string& type = touch_event.name();
const gfx::PointF& location = touch_event.location_f();
- const int touch_id = touch_event.touch_id();
+ const int touch_id = touch_event.pointer_details().id;
VLOG(1) << "\n Function name: " << function_name << "\n Event Type: " << type
<< "\n Location: " << location.ToString()

Powered by Google App Engine
This is Rietveld 408576698