@Override public boolean onTouch(View view, MotionEvent event) { if (layerView == null) { return false; } switch (event.getAction()) { case MotionEvent.ACTION_MOVE: if (moveZoomedView(event)) { dragged = true; } break; case MotionEvent.ACTION_UP: if (dragged) { dragged = false; } else { if (isClickInZoomedView(event.getY())) { GeckoAppShell.notifyObservers("Gesture:ClickInZoomedView", ""); layerView.dispatchTouchEvent(actionDownEvent); actionDownEvent.recycle(); PointF convertedPosition = getUnzoomedPositionFromPointInZoomedView(event.getX(), event.getY()); // the LayerView expects the coordinates relative to the window, not the surface, so // we need // to adjust that here. convertedPosition.y += layerView.getSurfaceTranslation(); MotionEvent e = MotionEvent.obtain( event.getDownTime(), event.getEventTime(), MotionEvent.ACTION_UP, convertedPosition.x, convertedPosition.y, event.getMetaState()); layerView.dispatchTouchEvent(e); e.recycle(); } } break; case MotionEvent.ACTION_DOWN: dragged = false; originRawX = event.getRawX(); originRawY = event.getRawY(); PointF convertedPosition = getUnzoomedPositionFromPointInZoomedView(event.getX(), event.getY()); // the LayerView expects the coordinates relative to the window, not the surface, so we // need // to adjust that here. convertedPosition.y += layerView.getSurfaceTranslation(); actionDownEvent = MotionEvent.obtain( event.getDownTime(), event.getEventTime(), MotionEvent.ACTION_DOWN, convertedPosition.x, convertedPosition.y, event.getMetaState()); break; } return true; }
@Override public void notifyCheckUpdateResult(String result) { GeckoAppShell.notifyObservers("Update:CheckResult", result); }