|
|
|
@ -298,7 +298,7 @@ public class WebViewEx extends WebView implements DownloadListener, View.OnLongC
|
|
|
|
|
|
|
|
|
|
private float lastX;
|
|
|
|
|
private float lastY;
|
|
|
|
|
private Integer lastXoff;
|
|
|
|
|
private int lastXoff;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onTouchEvent(MotionEvent event) {
|
|
|
|
@ -316,24 +316,18 @@ public class WebViewEx extends WebView implements DownloadListener, View.OnLongC
|
|
|
|
|
intercept = (yoff > 0 || dy >= 0) && (yoff < bottom || dy <= 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (intercept)
|
|
|
|
|
lastXoff = computeHorizontalScrollOffset();
|
|
|
|
|
else {
|
|
|
|
|
int xrange = computeHorizontalScrollRange();
|
|
|
|
|
int xextend = computeHorizontalScrollExtent();
|
|
|
|
|
boolean canScrollHorizontal = (xrange > xextend);
|
|
|
|
|
//Log.i("MMM xrange=" + xrange + " xextend=" + xextend + " can=" + canScrollHorizontal);
|
|
|
|
|
if (canScrollHorizontal) {
|
|
|
|
|
int right = xrange - xextend;
|
|
|
|
|
int xoff = computeHorizontalScrollOffset();
|
|
|
|
|
if (lastXoff == null)
|
|
|
|
|
lastXoff = xoff;
|
|
|
|
|
float dx = lastX - event.getX();
|
|
|
|
|
intercept = (xoff > 0 || dx >= 0) &&
|
|
|
|
|
(xoff < right || dx <= 0) &&
|
|
|
|
|
(Math.signum(dx) == Math.signum(xoff - lastXoff));
|
|
|
|
|
lastXoff = xoff;
|
|
|
|
|
}
|
|
|
|
|
int xrange = computeHorizontalScrollRange();
|
|
|
|
|
int xextend = computeHorizontalScrollExtent();
|
|
|
|
|
boolean canScrollHorizontal = (xrange > xextend);
|
|
|
|
|
if (canScrollHorizontal) {
|
|
|
|
|
int right = xrange - xextend;
|
|
|
|
|
int xoff = computeHorizontalScrollOffset();
|
|
|
|
|
int ldx = xoff - lastXoff;
|
|
|
|
|
float dx = lastX - event.getX();
|
|
|
|
|
intercept = (xoff > 0 || dx >= 0) &&
|
|
|
|
|
(xoff < right || dx <= 0) &&
|
|
|
|
|
(Math.signum(dx) == Math.signum(ldx));
|
|
|
|
|
lastXoff = xoff;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
getParent().requestDisallowInterceptTouchEvent(intercept || event.getPointerCount() > 1);
|
|
|
|
|