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

Side by Side Diff: ui/touch_selection/touch_handle.cc

Issue 759433002: Reland: Move TouchSelectionController from content to ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Excluded ui/touch_selection from Windows GN build Created 6 years 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
« no previous file with comments | « ui/touch_selection/touch_handle.h ('k') | ui/touch_selection/touch_handle_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/browser/renderer_host/input/touch_handle.h" 5 #include "ui/touch_selection/touch_handle.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 namespace content { 9 namespace ui {
10 10
11 namespace { 11 namespace {
12 12
13 // Maximum duration of a fade sequence. 13 // Maximum duration of a fade sequence.
14 const double kFadeDurationMs = 200; 14 const double kFadeDurationMs = 200;
15 15
16 // Maximum amount of travel for a fade sequence. This avoids handle "ghosting" 16 // Maximum amount of travel for a fade sequence. This avoids handle "ghosting"
17 // when the handle is moving rapidly while the fade is active. 17 // when the handle is moving rapidly while the fade is active.
18 const double kFadeDistanceSquared = 20.f * 20.f; 18 const double kFadeDistanceSquared = 20.f * 20.f;
19 19
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 return; 106 return;
107 } 107 }
108 DCHECK_EQ(deferred_orientation_, TOUCH_HANDLE_ORIENTATION_UNDEFINED); 108 DCHECK_EQ(deferred_orientation_, TOUCH_HANDLE_ORIENTATION_UNDEFINED);
109 if (orientation_ == orientation) 109 if (orientation_ == orientation)
110 return; 110 return;
111 111
112 orientation_ = orientation; 112 orientation_ = orientation;
113 drawable_->SetOrientation(orientation); 113 drawable_->SetOrientation(orientation);
114 } 114 }
115 115
116 bool TouchHandle::WillHandleTouchEvent(const ui::MotionEvent& event) { 116 bool TouchHandle::WillHandleTouchEvent(const MotionEvent& event) {
117 if (!enabled_) 117 if (!enabled_)
118 return false; 118 return false;
119 119
120 if (!is_dragging_ && event.GetAction() != ui::MotionEvent::ACTION_DOWN) 120 if (!is_dragging_ && event.GetAction() != MotionEvent::ACTION_DOWN)
121 return false; 121 return false;
122 122
123 switch (event.GetAction()) { 123 switch (event.GetAction()) {
124 case ui::MotionEvent::ACTION_DOWN: { 124 case MotionEvent::ACTION_DOWN: {
125 if (!is_visible_) 125 if (!is_visible_)
126 return false; 126 return false;
127 const float touch_size = std::max( 127 const float touch_size = std::max(
128 kMinTouchMajorForHitTesting, 128 kMinTouchMajorForHitTesting,
129 std::min(kMaxTouchMajorForHitTesting, event.GetTouchMajor())); 129 std::min(kMaxTouchMajorForHitTesting, event.GetTouchMajor()));
130 const gfx::RectF touch_rect(event.GetX() - touch_size * .5f, 130 const gfx::RectF touch_rect(event.GetX() - touch_size * .5f,
131 event.GetY() - touch_size * .5f, 131 event.GetY() - touch_size * .5f,
132 touch_size, 132 touch_size,
133 touch_size); 133 touch_size);
134 if (!drawable_->IntersectsWith(touch_rect)) 134 if (!drawable_->IntersectsWith(touch_rect))
135 return false; 135 return false;
136 touch_down_position_ = gfx::PointF(event.GetX(), event.GetY()); 136 touch_down_position_ = gfx::PointF(event.GetX(), event.GetY());
137 touch_to_focus_offset_ = position_ - touch_down_position_; 137 touch_to_focus_offset_ = position_ - touch_down_position_;
138 touch_down_time_ = event.GetEventTime(); 138 touch_down_time_ = event.GetEventTime();
139 BeginDrag(); 139 BeginDrag();
140 } break; 140 } break;
141 141
142 case ui::MotionEvent::ACTION_MOVE: { 142 case MotionEvent::ACTION_MOVE: {
143 gfx::PointF touch_move_position(event.GetX(), event.GetY()); 143 gfx::PointF touch_move_position(event.GetX(), event.GetY());
144 if (is_drag_within_tap_region_) { 144 if (is_drag_within_tap_region_) {
145 const float tap_slop = client_->GetTapSlop(); 145 const float tap_slop = client_->GetTapSlop();
146 is_drag_within_tap_region_ = 146 is_drag_within_tap_region_ =
147 (touch_move_position - touch_down_position_).LengthSquared() < 147 (touch_move_position - touch_down_position_).LengthSquared() <
148 tap_slop * tap_slop; 148 tap_slop * tap_slop;
149 } 149 }
150 150
151 // Note that we signal drag update even if we're inside the tap region, 151 // Note that we signal drag update even if we're inside the tap region,
152 // as there are cases where characters are narrower than the slop length. 152 // as there are cases where characters are narrower than the slop length.
153 client_->OnHandleDragUpdate(*this, 153 client_->OnHandleDragUpdate(*this,
154 touch_move_position + touch_to_focus_offset_); 154 touch_move_position + touch_to_focus_offset_);
155 } break; 155 } break;
156 156
157 case ui::MotionEvent::ACTION_UP: { 157 case MotionEvent::ACTION_UP: {
158 if (is_drag_within_tap_region_ && 158 if (is_drag_within_tap_region_ &&
159 (event.GetEventTime() - touch_down_time_) < 159 (event.GetEventTime() - touch_down_time_) <
160 client_->GetTapTimeout()) { 160 client_->GetTapTimeout()) {
161 client_->OnHandleTapped(*this); 161 client_->OnHandleTapped(*this);
162 } 162 }
163 163
164 EndDrag(); 164 EndDrag();
165 } break; 165 } break;
166 166
167 case ui::MotionEvent::ACTION_CANCEL: 167 case MotionEvent::ACTION_CANCEL:
168 EndDrag(); 168 EndDrag();
169 break; 169 break;
170 170
171 default: 171 default:
172 break; 172 break;
173 }; 173 };
174 return true; 174 return true;
175 } 175 }
176 176
177 bool TouchHandle::Animate(base::TimeTicks frame_time) { 177 bool TouchHandle::Animate(base::TimeTicks frame_time) {
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 } 254 }
255 255
256 void TouchHandle::SetAlpha(float alpha) { 256 void TouchHandle::SetAlpha(float alpha) {
257 alpha = std::max(0.f, std::min(1.f, alpha)); 257 alpha = std::max(0.f, std::min(1.f, alpha));
258 if (alpha_ == alpha) 258 if (alpha_ == alpha)
259 return; 259 return;
260 alpha_ = alpha; 260 alpha_ = alpha;
261 drawable_->SetAlpha(alpha); 261 drawable_->SetAlpha(alpha);
262 } 262 }
263 263
264 } // namespace content 264 } // namespace ui
OLDNEW
« no previous file with comments | « ui/touch_selection/touch_handle.h ('k') | ui/touch_selection/touch_handle_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698