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

Unified Diff: ui/touch_selection/touch_selection_controller.cc

Issue 481683003: Support for Adaptive Handle Orientation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed few inverting issues checked on Chrome Public apk Created 5 years, 7 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/touch_selection/touch_selection_controller.cc
diff --git a/ui/touch_selection/touch_selection_controller.cc b/ui/touch_selection/touch_selection_controller.cc
index 34cc30a526172079f53e9319952ca4127031b08d..6527fae82697ab2cd8742ff1d9cbcffb800eefbb 100644
--- a/ui/touch_selection/touch_selection_controller.cc
+++ b/ui/touch_selection/touch_selection_controller.cc
@@ -66,6 +66,29 @@ TouchSelectionController::TouchSelectionController(
TouchSelectionController::~TouchSelectionController() {
}
+void TouchSelectionController::OnViewportChanged(
+ const gfx::RectF viewport_rect) {
+ // Trigger a force update if the viewport is changed, so that
+ // it triggers a call to change the mirror values if required.
+ if (viewport_rect_ == viewport_rect)
+ return;
+
+ viewport_rect_ = viewport_rect;
+
+ if (active_status_ == INACTIVE)
+ return;
+
+ if (active_status_ == INSERTION_ACTIVE) {
+ DCHECK(insertion_handle_);
+ insertion_handle_->SetViewportRect(viewport_rect);
+ } else if (active_status_ == SELECTION_ACTIVE) {
+ DCHECK(start_selection_handle_);
+ DCHECK(end_selection_handle_);
+ start_selection_handle_->SetViewportRect(viewport_rect);
+ end_selection_handle_->SetViewportRect(viewport_rect);
+ }
+}
+
void TouchSelectionController::OnSelectionBoundsChanged(
const SelectionBound& start,
const SelectionBound& end) {
@@ -291,11 +314,11 @@ void TouchSelectionController::OnHandleDragBegin(const TouchHandle& handle) {
gfx::PointF base, extent;
if (&handle == start_selection_handle_.get()) {
- base = end_selection_handle_->position() + GetEndLineOffset();
- extent = start_selection_handle_->position() + GetStartLineOffset();
+ base = end_selection_handle_->focus_bottom() + GetEndLineOffset();
+ extent = start_selection_handle_->focus_bottom() + GetStartLineOffset();
} else {
- base = start_selection_handle_->position() + GetStartLineOffset();
- extent = end_selection_handle_->position() + GetEndLineOffset();
+ base = start_selection_handle_->focus_bottom() + GetStartLineOffset();
+ extent = end_selection_handle_->focus_bottom() + GetEndLineOffset();
}
selection_handle_dragged_ = true;
@@ -396,9 +419,9 @@ void TouchSelectionController::OnInsertionChanged() {
else
client_->OnSelectionEvent(INSERTION_MOVED);
+ insertion_handle_->SetFocus(start_.edge_top(), start_.edge_bottom());
insertion_handle_->SetVisible(GetStartVisible(),
GetAnimationStyle(was_active));
- insertion_handle_->SetPosition(position);
}
void TouchSelectionController::OnSelectionChanged() {
@@ -414,11 +437,16 @@ void TouchSelectionController::OnSelectionChanged() {
client_->OnSelectionEvent(SELECTION_MOVED);
const TouchHandle::AnimationStyle animation = GetAnimationStyle(was_active);
+
+ start_selection_handle_->SetFocus(start_.edge_top(), start_.edge_bottom());
+ end_selection_handle_->SetFocus(end_.edge_top(), end_.edge_bottom());
+
+ start_selection_handle_->SetOrientation(start_orientation_);
+ end_selection_handle_->SetOrientation(end_orientation_);
+
start_selection_handle_->SetVisible(GetStartVisible(), animation);
end_selection_handle_->SetVisible(GetEndVisible(), animation);
- start_selection_handle_->SetPosition(GetStartPosition());
- end_selection_handle_->SetPosition(GetEndPosition());
}
void TouchSelectionController::ActivateInsertion() {
@@ -426,10 +454,11 @@ void TouchSelectionController::ActivateInsertion() {
if (!insertion_handle_)
insertion_handle_.reset(
- new TouchHandle(this, TouchHandleOrientation::CENTER));
+ new TouchHandle(this, TouchHandleOrientation::CENTER, viewport_rect_));
if (active_status_ == INACTIVE) {
active_status_ = INSERTION_ACTIVE;
+ insertion_handle_->SetViewportRect(viewport_rect_);
insertion_handle_->SetEnabled(true);
client_->OnSelectionEvent(INSERTION_SHOWN);
}
@@ -448,17 +477,19 @@ void TouchSelectionController::ActivateSelection() {
DCHECK_NE(INSERTION_ACTIVE, active_status_);
if (!start_selection_handle_) {
- start_selection_handle_.reset(new TouchHandle(this, start_orientation_));
+ start_selection_handle_.reset(
+ new TouchHandle(this, start_orientation_, viewport_rect_));
} else {
+ start_selection_handle_->SetViewportRect(viewport_rect_);
start_selection_handle_->SetEnabled(true);
- start_selection_handle_->SetOrientation(start_orientation_);
}
if (!end_selection_handle_) {
- end_selection_handle_.reset(new TouchHandle(this, end_orientation_));
+ end_selection_handle_.reset(
+ new TouchHandle(this, end_orientation_, viewport_rect_));
} else {
+ end_selection_handle_->SetViewportRect(viewport_rect_);
end_selection_handle_->SetEnabled(true);
- end_selection_handle_->SetOrientation(end_orientation_);
}
// As a long press received while a selection is already active may trigger
« ui/touch_selection/touch_handle.cc ('K') | « ui/touch_selection/touch_selection_controller.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698