From 475cb0ded555fa25699201172b1e2854769958fb Mon Sep 17 00:00:00 2001 From: Andrew Shu Date: Fri, 11 Jun 2021 15:44:14 -0700 Subject: [PATCH 1/2] Respect longClickable attribute Fixes #552 --- .../labs/subscaleview/SubsamplingScaleImageView.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java index 56a6b5ee..40874a93 100755 --- a/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java +++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java @@ -292,7 +292,7 @@ public SubsamplingScaleImageView(Context context, AttributeSet attr) { setGestureDetector(context); this.handler = new Handler(new Handler.Callback() { public boolean handleMessage(Message message) { - if (message.what == MESSAGE_LONG_CLICK && onLongClickListener != null) { + if (message.what == MESSAGE_LONG_CLICK && onLongClickListener != null && isLongClickable()) { maxTouchCount = 0; SubsamplingScaleImageView.super.setOnLongClickListener(onLongClickListener); performLongClick(); @@ -2856,6 +2856,9 @@ public boolean hasImage() { */ @Override public void setOnLongClickListener(OnLongClickListener onLongClickListener) { + if (!isLongClickable()) { + setLongClickable(true); + } this.onLongClickListener = onLongClickListener; } From 2fcd539c3a42d9a0d20524bd114aa1d3942bf65e Mon Sep 17 00:00:00 2001 From: Andrew Shu Date: Fri, 11 Jun 2021 15:51:28 -0700 Subject: [PATCH 2/2] Cancel gestures when ACTION_CANCEL is received --- .../labs/subscaleview/SubsamplingScaleImageView.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java index 40874a93..60fdd1eb 100755 --- a/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java +++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java @@ -922,6 +922,13 @@ private boolean onTouchEventInternal(@NonNull MotionEvent event) { maxTouchCount = 0; } return true; + case MotionEvent.ACTION_CANCEL: + handler.removeMessages(MESSAGE_LONG_CLICK); + isQuickScaling = false; + isZooming = false; + isPanning = false; + maxTouchCount = 0; + return true; } return false; }