summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2015-01-15 15:09:00 +0900
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-01-16 13:18:30 +0100
commitda39c5fd715fba173836a2098b68d647e867fba6 (patch)
tree5da1bc0f43156e8fbaf3e6bb69223dda9130c174 /android
parent0f291b37ca5dd0b86fc2324756761a163727e355 (diff)
android: fennec import - double tap zoom in JavaPanZoomController
Change-Id: I0fedb5bb353e4d6f9926a8c0f0b80a81b7257d0e
Diffstat (limited to 'android')
-rw-r--r--android/experimental/LOAndroid3/src/java/org/mozilla/gecko/ZoomConstraints.java13
-rw-r--r--android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java37
2 files changed, 39 insertions, 11 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/ZoomConstraints.java b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/ZoomConstraints.java
index 40d1817c9301..4ac49f728e4a 100644
--- a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/ZoomConstraints.java
+++ b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/ZoomConstraints.java
@@ -10,28 +10,27 @@ import org.json.JSONObject;
public final class ZoomConstraints {
private final boolean mAllowZoom;
+ private final boolean mAllowDoubleTapZoom;
private final float mDefaultZoom;
private final float mMinZoom;
private final float mMaxZoom;
public ZoomConstraints(boolean allowZoom) {
mAllowZoom = allowZoom;
+ mAllowDoubleTapZoom = allowZoom;
mDefaultZoom = 0.0f;
mMinZoom = 0.0f;
mMaxZoom = 0.0f;
}
- ZoomConstraints(JSONObject message) throws JSONException {
- mAllowZoom = message.getBoolean("allowZoom");
- mDefaultZoom = (float)message.getDouble("defaultZoom");
- mMinZoom = (float)message.getDouble("minZoom");
- mMaxZoom = (float)message.getDouble("maxZoom");
- }
-
public final boolean getAllowZoom() {
return mAllowZoom;
}
+ public final boolean getAllowDoubleTapZoom() {
+ return mAllowDoubleTapZoom;
+ }
+
public final float getDefaultZoom() {
return mDefaultZoom;
}
diff --git a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
index 3b3d33e7665f..ccf6280e75a6 100644
--- a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
+++ b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
@@ -87,6 +87,8 @@ public class JavaPanZoomController
private long mLastEventTime;
/* Current state the pan/zoom UI is in. */
private PanZoomState mState;
+ /* Whether or not to wait for a double-tap before dispatching a single-tap */
+ private boolean mWaitForDoubleTap;
public JavaPanZoomController(PanZoomTarget target) {
mTarget = target;
@@ -865,6 +867,7 @@ public class JavaPanZoomController
mTarget.setViewportMetrics(viewportMetrics);
}
+ @Override
public boolean getRedrawHint() {
switch (mState) {
case PINCHING:
@@ -881,18 +884,41 @@ public class JavaPanZoomController
}
@Override
+ public boolean onDown(MotionEvent motionEvent) {
+ mWaitForDoubleTap = mTarget.getZoomConstraints().getAllowDoubleTapZoom();
+ return false;
+ }
+
+ @Override
+ public void onShowPress(MotionEvent motionEvent) {
+ // If we get this, it will be followed either by a call to
+ // onSingleTapUp (if the user lifts their finger before the
+ // long-press timeout) or a call to onLongPress (if the user
+ // does not). In the former case, we want to make sure it is
+ // treated as a click. (Note that if this is called, we will
+ // not get a call to onDoubleTap).
+ mWaitForDoubleTap = false;
+ }
+
+ @Override
public void onLongPress(MotionEvent motionEvent) {
}
@Override
public boolean onSingleTapUp(MotionEvent motionEvent) {
- // When zooming is enabled, wait to see if there's a double-tap.
+ // When double-tapping is allowed, we have to wait to see if this is
+ // going to be a double-tap.
+ if (!mWaitForDoubleTap) {
+ }
+ // return false because we still want to get the ACTION_UP event that triggers this
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent motionEvent) {
- // When zooming is disabled, we handle this in onSingleTapUp.
+ // In cases where we don't wait for double-tap, we handle this in onSingleTapUp.
+ if (mWaitForDoubleTap) {
+ }
return true;
}
@@ -938,8 +964,8 @@ public class JavaPanZoomController
ImmutableViewportMetrics finalMetrics = getMetrics();
finalMetrics = finalMetrics.setViewportOrigin(
- zoomToRect.left * finalMetrics.zoomFactor,
- zoomToRect.top * finalMetrics.zoomFactor);
+ zoomToRect.left * finalMetrics.zoomFactor,
+ zoomToRect.top * finalMetrics.zoomFactor);
finalMetrics = finalMetrics.scaleTo(finalZoom, new PointF(0.0f, 0.0f));
// 2. now run getValidViewportMetrics on it, so that the target viewport is
@@ -951,16 +977,19 @@ public class JavaPanZoomController
}
/** This function must be called from the UI thread. */
+ @Override
public void abortPanning() {
checkMainThread();
bounce();
}
+ @Override
public void setOverScrollMode(int overscrollMode) {
mX.setOverScrollMode(overscrollMode);
mY.setOverScrollMode(overscrollMode);
}
+ @Override
public int getOverScrollMode() {
return mX.getOverScrollMode();
}