MCPcopy Create free account
hub / github.com/M66B/FairEmail / onTouchEvent

Method onTouchEvent

app/src/main/java/eu/faircode/email/WebViewEx.java:387–429  ·  view source on GitHub ↗
(MotionEvent event)

Source from the content-addressed store, hash-verified

385 private int lastXoff;
386
387 @Override
388 public boolean onTouchEvent(MotionEvent event) {
389 boolean intercept = false;
390 if (event.getAction() == MotionEvent.ACTION_DOWN)
391 intercept = true; // Prevent ACTION_CANCEL on fling
392 else if (event.getAction() == MotionEvent.ACTION_MOVE) {
393 int yrange = computeVerticalScrollRange();
394 int yextend = computeVerticalScrollExtent();
395 boolean canScrollVertical = (yrange > yextend);
396 if (canScrollVertical) {
397 int bottom = yrange - yextend;
398 int yoff = computeVerticalScrollOffset();
399 float dy = lastY - event.getY();
400 intercept = (yoff > 0 || dy >= 0) && (yoff < bottom || dy <= 0);
401 }
402
403 if (!intercept) {
404 int xrange = computeHorizontalScrollRange();
405 int xextend = computeHorizontalScrollExtent();
406 boolean canScrollHorizontal = (xrange > xextend);
407 if (canScrollHorizontal) {
408 int right = xrange - xextend;
409 int xoff = computeHorizontalScrollOffset();
410 int ldx = xoff - lastXoff;
411 float dx = lastX - event.getX();
412 intercept = (xoff > 0 || dx >= 0) &&
413 (xoff < right || dx <= 0) &&
414 (Math.signum(dx) == Math.signum(ldx));
415 lastXoff = xoff;
416 }
417 }
418 }
419
420 // There will be scroll issues without this
421 if (viewportHeight == 0)
422 intercept = false;
423
424 getParent().requestDisallowInterceptTouchEvent(intercept || event.getPointerCount() > 1);
425
426 lastX = event.getX();
427 lastY = event.getY();
428 return super.onTouchEvent(event);
429 }
430
431 @Override
432 public boolean dispatchKeyEvent(KeyEvent event) {

Callers 1

onTouchMethod · 0.45

Calls 4

getYMethod · 0.80
getXMethod · 0.80
getActionMethod · 0.45
getParentMethod · 0.45

Tested by

no test coverage detected