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

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

Issue 1537493006: Allow scrolling a page with selection after long-press on whitespace (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated comments Created 4 years, 11 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
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 "ui/touch_selection/touch_selection_controller.h" 5 #include "ui/touch_selection/touch_selection_controller.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/metrics/histogram_macros.h" 9 #include "base/metrics/histogram_macros.h"
10 10
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 return true; 224 return true;
225 225
226 longpress_drag_selector_.OnLongPressEvent(event_time, location); 226 longpress_drag_selector_.OnLongPressEvent(event_time, location);
227 response_pending_input_event_ = LONG_PRESS; 227 response_pending_input_event_ = LONG_PRESS;
228 ShowSelectionHandlesAutomatically(); 228 ShowSelectionHandlesAutomatically();
229 ShowInsertionHandleAutomatically(); 229 ShowInsertionHandleAutomatically();
230 ForceNextUpdateIfInactive(); 230 ForceNextUpdateIfInactive();
231 return false; 231 return false;
232 } 232 }
233 233
234 void TouchSelectionController::OnScrollBeginEvent() {
235 // If a scroll happens after a long-press on an empty area, the long-press
mfomitchev 2016/01/04 18:58:44 Can we rephrase to be a bit more explicit, e.g.: I
mohsen 2016/01/04 19:23:05 Done.
236 // will not change the selection, however the scroll will move the selection.
237 // In this case we might think incorrectly that the selection change was due
mfomitchev 2016/01/04 18:58:44 Can we replace "might" with "will" here? Also, per
mohsen 2016/01/04 19:23:05 Done.
238 // to long-press and will activate touch selection and start long-press drag
239 // gesture. To prevent this, we need to reset the state of touch selection
240 // controller and long-press drag selector.
241 // TODO(mohsen): Remove this workaround when we have enough information about
242 // the cause of a selection change (see https://crbug.com/571897).
243 longpress_drag_selector_.OnScrollBeginEvent();
244 response_pending_input_event_ = INPUT_EVENT_TYPE_NONE;
245 if (active_status_ == INACTIVE) {
246 activate_insertion_automatically_ = false;
247 activate_selection_automatically_ = false;
248 }
249 }
250
234 void TouchSelectionController::AllowShowingFromCurrentSelection() { 251 void TouchSelectionController::AllowShowingFromCurrentSelection() {
235 if (active_status_ != INACTIVE) 252 if (active_status_ != INACTIVE)
236 return; 253 return;
237 254
238 activate_selection_automatically_ = true; 255 activate_selection_automatically_ = true;
239 activate_insertion_automatically_ = true; 256 activate_insertion_automatically_ = true;
240 if (GetStartPosition() != GetEndPosition()) { 257 if (GetStartPosition() != GetEndPosition()) {
241 OnSelectionChanged(); 258 OnSelectionChanged();
242 } else if (start_orientation_ == TouchHandleOrientation::CENTER && 259 } else if (start_orientation_ == TouchHandleOrientation::CENTER &&
243 selection_editable_) { 260 selection_editable_) {
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
661 base::TimeDelta duration = base::TimeTicks::Now() - selection_start_time_; 678 base::TimeDelta duration = base::TimeTicks::Now() - selection_start_time_;
662 UMA_HISTOGRAM_CUSTOM_TIMES("Event.TouchSelection.WasDraggedDuration", 679 UMA_HISTOGRAM_CUSTOM_TIMES("Event.TouchSelection.WasDraggedDuration",
663 duration, 680 duration,
664 base::TimeDelta::FromMilliseconds(500), 681 base::TimeDelta::FromMilliseconds(500),
665 base::TimeDelta::FromSeconds(60), 682 base::TimeDelta::FromSeconds(60),
666 60); 683 60);
667 } 684 }
668 } 685 }
669 686
670 } // namespace ui 687 } // namespace ui
OLDNEW
« no previous file with comments | « ui/touch_selection/touch_selection_controller.h ('k') | ui/touch_selection/touch_selection_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698