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

Unified Diff: remoting/android/java/src/org/chromium/chromoting/TouchInputHandler.java

Issue 2105843002: Updating SystemUI visibility events in Adroid Client. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressing feedback Created 4 years, 6 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
« no previous file with comments | « remoting/android/java/src/org/chromium/chromoting/SystemUiVisibilityChangedEventParameter.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/android/java/src/org/chromium/chromoting/TouchInputHandler.java
diff --git a/remoting/android/java/src/org/chromium/chromoting/TouchInputHandler.java b/remoting/android/java/src/org/chromium/chromoting/TouchInputHandler.java
index 7e2b4992ff78c29661e461d1443aff8abdbd4e20..9d2c596f0c612edf7d1e9203cd97d6d1e22a8fc9 100644
--- a/remoting/android/java/src/org/chromium/chromoting/TouchInputHandler.java
+++ b/remoting/android/java/src/org/chromium/chromoting/TouchInputHandler.java
@@ -109,7 +109,7 @@ public class TouchInputHandler {
canvasToImage.mapVectors(delta);
}
- moveViewportWithOffset(-delta[0], -delta[1]);
+ moveViewportByOffset(-delta[0], -delta[1]);
}
}
@@ -233,11 +233,11 @@ public class TouchInputHandler {
}
});
- desktop.onSoftInputMethodVisibilityChanged().add(
- new Event.ParameterRunnable<SoftInputMethodVisibilityChangedEventParameter>() {
+ desktop.onSystemUiVisibilityChanged().add(
+ new Event.ParameterRunnable<SystemUiVisibilityChangedEventParameter>() {
@Override
- public void run(SoftInputMethodVisibilityChangedEventParameter parameter) {
- handleSoftInputMethodVisibilityChanged(parameter);
+ public void run(SystemUiVisibilityChangedEventParameter parameter) {
+ handleSystemUiVisibilityChanged(parameter);
}
});
}
@@ -297,15 +297,15 @@ public class TouchInputHandler {
mViewer.cursorVisibilityChanged();
}
- private void handleSoftInputMethodVisibilityChanged(
- SoftInputMethodVisibilityChangedEventParameter parameter) {
+ private void handleSystemUiVisibilityChanged(
+ SystemUiVisibilityChangedEventParameter parameter) {
synchronized (mRenderData) {
- if (parameter.visible) {
- mDesktopCanvas.setInputMethodOffsetValues(
+ if (parameter.softInputMethodVisible) {
+ mDesktopCanvas.setSystemUiOffsetValues(parameter.left, parameter.top,
mRenderData.screenWidth - parameter.right,
mRenderData.screenHeight - parameter.bottom);
} else {
- mDesktopCanvas.setInputMethodOffsetValues(0, 0);
+ mDesktopCanvas.setSystemUiOffsetValues(0, 0, 0, 0);
}
}
@@ -374,62 +374,24 @@ public class TouchInputHandler {
}
/** Moves the desired center of the viewport using the specified deltas. */
- private void moveViewportWithOffset(float deltaX, float deltaY) {
+ private void moveViewportByOffset(float deltaX, float deltaY) {
// If we are in an indirect mode or are in the middle of a drag operation, then we want to
// invert the direction of the operation (i.e. follow the motion of the finger).
- if (mInputStrategy.isIndirectInputMode() || mIsDragging) {
+ boolean followCursor = (mInputStrategy.isIndirectInputMode() || mIsDragging);
+ if (followCursor) {
deltaX = -deltaX;
deltaY = -deltaY;
}
-
// Determine the center point from which to apply the delta.
// For indirect input modes (i.e. trackpad), the view generally follows the cursor.
// For direct input modes (i.e. touch) the should track the user's motion.
// If the user is dragging, then the viewport should always follow the user's finger.
- PointF viewportPoint;
- if (mInputStrategy.isIndirectInputMode() || mIsDragging) {
- viewportPoint = mDesktopCanvas.getViewportPosition();
- } else {
- PointF adjustedViewportSize = mDesktopCanvas.getViewportSize();
- synchronized (mRenderData) {
- float[] viewportPosition = new float[] {(float) adjustedViewportSize.x / 2,
- (float) adjustedViewportSize.y / 2};
- Matrix inverted = new Matrix();
- mRenderData.transform.invert(inverted);
- inverted.mapPoints(viewportPosition);
- viewportPoint = new PointF(viewportPosition[0], viewportPosition[1]);
- }
- }
-
- // Constrain the coordinates to the image area.
- float newX = viewportPoint.x + deltaX;
- float newY = viewportPoint.y + deltaY;
- synchronized (mRenderData) {
- // Constrain viewport position to the image area.
- if (newX < 0) {
- newX = 0;
- } else if (newX > mRenderData.imageWidth) {
- newX = mRenderData.imageWidth;
- }
-
- if (newY < 0) {
- newY = 0;
- } else if (newY > mRenderData.imageHeight) {
- newY = mRenderData.imageHeight;
- }
- }
-
- moveViewport(newX, newY);
- }
-
- /** Moves the desired center of the viewport to the specified position. */
- private void moveViewport(float newX, float newY) {
- mDesktopCanvas.setViewportPosition(newX, newY);
+ PointF newPos = mDesktopCanvas.moveViewportCenter(!followCursor, deltaX, deltaY);
// If we are in an indirect mode or are in the middle of a drag operation, then we want to
// keep the cursor centered, if possible, as the viewport moves.
- if (mInputStrategy.isIndirectInputMode() || mIsDragging) {
- moveCursor((int) newX, (int) newY);
+ if (followCursor) {
+ moveCursor((int) newPos.x, (int) newPos.y);
}
mDesktopCanvas.repositionImage(true);
@@ -527,7 +489,7 @@ public class TouchInputHandler {
canvasToImage.mapVectors(delta);
}
- moveViewportWithOffset(delta[0], delta[1]);
+ moveViewportByOffset(delta[0], delta[1]);
return true;
}
« no previous file with comments | « remoting/android/java/src/org/chromium/chromoting/SystemUiVisibilityChangedEventParameter.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698