@Override
  public void onFingerReleaseAfterLongPress(int x, int y) {
    final SelectionCursor.Which cursor = getSelectionCursorInMovement();
    if (cursor != null) {
      releaseSelectionCursor();
      return;
    }

    final ZLTextRegion region = getOutlinedRegion();
    if (region != null) {
      final ZLTextRegion.Soul soul = region.getSoul();

      boolean doRunAction = false;
      if (soul instanceof ZLTextWordRegionSoul) {
        doRunAction =
            myReader.MiscOptions.WordTappingAction.getValue()
                == MiscOptions.WordTappingActionEnum.openDictionary;
      } else if (soul instanceof ZLTextImageRegionSoul) {
        doRunAction =
            myReader.ImageOptions.TapAction.getValue() == ImageOptions.TapActionEnum.openImageView;
      }

      if (doRunAction) {
        myReader.runAction(ActionCode.PROCESS_HYPERLINK);
      }
    }
  }
 @Override
 public void onFingerEventCancelled() {
   final SelectionCursor.Which cursor = getSelectionCursorInMovement();
   if (cursor != null) {
     releaseSelectionCursor();
   }
 }
 @Override
 public void onFingerRelease(int x, int y) {
   final SelectionCursor.Which cursor = getSelectionCursorInMovement();
   if (cursor != null) {
     releaseSelectionCursor();
   } else if (myIsBrightnessAdjustmentInProgress) {
     myIsBrightnessAdjustmentInProgress = false;
   } else if (isFlickScrollingEnabled()) {
     myReader
         .getViewWidget()
         .startAnimatedScrolling(x, y, myReader.PageTurningOptions.AnimationSpeed.getValue());
   }
 }